2013-03-21 1 views
2

에 AsynTask 내부 JSON을 구문 분석에 나는 AsynTask하고 그것을 json를 검색하고 분석하는 것을 시도해야하지만이 오류가 얻을 :오류 안드로이드

03-21 11:38:07.033: E/AndroidRuntime(8439): FATAL EXCEPTION: main 
03-21 11:38:07.033: E/AndroidRuntime(8439): java.lang.NullPointerException 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at org.json.JSONTokener.nextValue(JSONTokener.java:94) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at org.json.JSONObject.<init>(JSONObject.java:154) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at org.json.JSONObject.<init>(JSONObject.java:171) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at Dic.proj.pkg.notifService.parse_if_update(notifService.java:191) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at Dic.proj.pkg.notifService$1$1$1.onPostExecute(notifService.java:153) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at Dic.proj.pkg.notifService$1$1$1.onPostExecute(notifService.java:1) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at android.os.AsyncTask.finish(AsyncTask.java:631) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at android.os.AsyncTask.access$600(AsyncTask.java:177) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at android.os.Looper.loop(Looper.java:137) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at android.app.ActivityThread.main(ActivityThread.java:4921) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 
03-21 11:38:07.033: E/AndroidRuntime(8439):  at dalvik.system.NativeStart.main(Native Method) 

을이 내 parse_if_update 기능입니다 :

public static String parse_if_update(String jsonResponse) { 
    String update="no"; 

    try { 
     JSONObject json = new JSONObject(jsonResponse); 
     update = json.getString("update"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    if(update == null){ 
     update="no"; 
    } 
    return update; 
} 

무엇이 잘못 되었나요? 나는이 문제를 해결하기 위해 이틀을 보냈다. 때로는 null 값이 발생하지만 그 값을 다루는 방법을 모르겠습니다.

+1

을 올릴 수 있습니다 notifService.java:191입니까? – Nermeen

+1

어느 행이 notifService.java:191입니까? –

+1

'jsonResponse'을 붙여주세요. jsonResponse가 null이거나 객체를 초기화 할 수없는 것 같습니다. –

답변

2

null 테스트와 다른 간단한 테스트 추가.

public static String parse_if_update(String jsonResponse) { 
String update="no"; 

    if (jsonResponse != null) {  
     try { 
       JSONObject json = new JSONObject(jsonResponse); 
       if (json != null) { 
        update = json.getString("update"); 
       } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     if(update == null){ 
      update="no"; 
     } 
    } 
    return update; 
} 

그래도 문제가 있습니까? 코드 아래

+0

감사합니다. 내 문제를 해결했습니다. – Fcoder

1

작동합니다 :

public static String parse_if_update(String jsonResponse) { 
     String update="no"; 

     try { 
       JSONObject json = new JSONObject(jsonResponse); 
       if(json!=null) 
        update = json.getString("update"); 
       else 
        update = "no"; 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     if(update == null){ 
      update="no"; 
     } 
     return update; 
    } 
+0

감사합니다. 내 문제가 해결되었습니다. – Fcoder

1

문자열 "업데이트"로 null의 확인하는 경우 : 당신이 이것을 확인 해달라고하면

if (!json.isNull("update")) { 
    update = json.getString("update"); 
} 

,이있는 A 라인 nullpointer

+0

감사합니다.이 문제는 해결되었습니다. :) – Fcoder