2016-04-13 11 views
0

私のコードでgetJSONとparseJSONを使用しようとしていますが、getJSONは正しく動作しますが、解析はしません。私は例外を取得:getJSONは動作しますが、parseJSON doesnt

MainActivityで
java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONObject org.json.JSONArray.getJSONObject(int)' on a null object reference 

私が持っている:

 public void onCellLocationChanged(CellLocation lokacija) { 
     super.onCellLocationChanged(lokacija); 
     location = (GsmCellLocation) Phone.getCellLocation(); 
     textCellId.setText(String.valueOf(location.getCid() % 65536)); 
     textCellLac.setText(String.valueOf(location.getLac())); 
     String JSON_URL_string=JSON_URL + "?cellid=" + String.valueOf(location.getCid()%65636); 
     getJSON(JSON_URL_string); 
     ParseJSON(); 
    } 

getJSONは、このようなものを返します:あなたは、私が呼ば見たようgetJSON後

{"result":[{"cellname":"BG_ACB1","celllat":"44.81125","celllon":"20.39933","celldir":"0","cellattr":"gsm900"},{"cellname":"SOMB5W1","celllat":"45.783055","celllon":"19.120833","celldir":"100","cellattr":"umts900"}]} 

をParseJSON:

private void ParseJSON() { 
     Intent intent = new Intent(MainActivity.this,ParseJSON.class); 
     intent.putExtra(MY_JSON,textCellNameSakriven.getText().toString()); 
     startActivity(intent); 
    } 

ここにac ParseJSON。私はParseJSONなしでコードを実行した場合、それは正常に動作します:

public class ParseJSON extends ActionBarActivity { 

    private String myJSONString; 

    private static final String JSON_ARRAY ="result"; 
    private static final String CELLNAME = "cellname"; 

    private JSONArray users = null; 

    private int TRACK = 0; 

    private TextView textCellName; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Intent intent = getIntent(); 
     myJSONString = intent.getStringExtra(MainActivity.MY_JSON); 

     textCellName=(TextView) findViewById(R.id.textCellName); 
     extractJSON(); 
     showData(); 
    } 

    private void extractJSON(){ 
     try { 
      JSONObject jsonObject = new JSONObject(myJSONString); 
      users = jsonObject.getJSONArray(JSON_ARRAY); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    private void showData(){ 
     try { 
      JSONObject jsonObject = users.getJSONObject(TRACK); 

      textCellName.setText(jsonObject.getString(CELLNAME)); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

そして最後に、ここではログは次のとおりです。

FATAL EXCEPTION: main 
Process: com.zelenigrad.bsavkovic.myapplication, PID: 9862 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.zelenigrad.bsavkovic.myapplication/com.zelenigrad.bsavkovic.myapplication.ParseJSON}: java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONObject org.json.JSONArray.getJSONObject(int)' on a null object reference 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365) 
    at android.app.ActivityThread.access$800(ActivityThread.java:148) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5272) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) 
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONObject org.json.JSONArray.getJSONObject(int)' on a null object reference 
    at com.zelenigrad.bsavkovic.myapplication.ParseJSON.showData(ParseJSON.java:59) 
    at com.zelenigrad.bsavkovic.myapplication.ParseJSON.onCreate(ParseJSON.java:43) 
    at android.app.Activity.performCreate(Activity.java:5977) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2258) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365)  
    at android.app.ActivityThread.access$800(ActivityThread.java:148)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:135)  
    at android.app.ActivityThread.main(ActivityThread.java:5272)  
    at java.lang.reflect.Method.invoke(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:372)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704) 

は努力をありがとうございました。

RGDS

+0

)、ログか何かを入れてチェック – Rahul

答えて

0

あなたはあなたにNullPointerExceptionができますあなたの応答でそのようにはJSONオブジェクトがありません

この

JSONObject jsonObject = users.getJSONObject(TRACK); 
を使用することはできません。

であり、オブジェクト名はString alwaysでなければなりません。代わりにint値TRACKを使用しています。私はここであなたには、いくつかの例外extractJSONを(取得していると思います

+0

はい、あなたは正しいです。私はインターネットからこのコードを使用し、私が必要としないと思った部分を削除しました。私はそれを修正する方法を見なければならないでしょう。 Tnx –

関連する問題