2016-04-13 30 views
0

yapmıyor Kodumda getJSON ve parseJSON kullanmaya çalışıyorum ve getJSON düzgün çalışıyor ancak ayrıştırma yapmıyor. Özel durum almak:getJSON çalışıyor ama parseJSON,

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

Ben:

 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 böyle bir şey döndürür: Eğer aradım gördüğümüz gibi getJSON sonra

{"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); 
    } 

Ve işte burada ac 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(); 
     } 
    } 
} 

Ve sonunda, burada bir günlük olduğunu: Ben parseJSON olmadan bir kod çalıştırırsanız düzgün çalıştığını

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) 

çaba için teşekkür ederiz.

Rgds

+0

Burada bir istisna alıyorsanız, extractJSON(), günlük veya bir şey koyarak kontrol edin – Rahul

cevap

0

Bu

JSONObject jsonObject = users.getJSONObject(TRACK); 

size NullPointerException verir Yanıtınız böyle hiçbir json nesne yok edilir kullanamaz.

ve nesne adı String always olmalıdır. Bunun yerine int değeri TRACK kullanıyorsunuz.

+0

Evet, haklısınız. Bu kodu internetten kullandım ve ihtiyacım olmadığını düşündüğüm bazı bölümleri çıkardım. Nasıl düzelteceğime bakmalıyım. tnx –

İlgili konular