2013-03-20 60 views
0

我从定时器循环内部的android服务中的web的json源获取信息。有时候,大约5%的次数我得到这个错误:在Android中解析json内部的asyntask

03-20 09:27:06.901: E/AndroidRuntime(401): FATAL EXCEPTION: main 
03-20 09:27:06.901: E/AndroidRuntime(401): java.lang.NullPointerException 
03-20 09:27:06.901: E/AndroidRuntime(401): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:112) 
03-20 09:27:06.901: E/AndroidRuntime(401): at org.json.JSONTokener.nextValue(JSONTokener.java:90) 
03-20 09:27:06.901: E/AndroidRuntime(401): at org.json.JSONObject.<init>(JSONObject.java:154) 
03-20 09:27:06.901: E/AndroidRuntime(401): at org.json.JSONObject.<init>(JSONObject.java:171) 
03-20 09:27:06.901: E/AndroidRuntime(401): at Dic.proj.pkg.notifService.parse_if_update(notifService.java:182) 
03-20 09:27:06.901: E/AndroidRuntime(401): at Dic.proj.pkg.notifService$1$1$1.onPostExecute(notifService.java:151) 
03-20 09:27:06.901: E/AndroidRuntime(401): at Dic.proj.pkg.notifService$1$1$1.onPostExecute(notifService.java:1) 
03-20 09:27:06.901: E/AndroidRuntime(401): at android.os.AsyncTask.finish(AsyncTask.java:417) 
03-20 09:27:06.901: E/AndroidRuntime(401): at android.os.AsyncTask.access$300(AsyncTask.java:127) 
03-20 09:27:06.901: E/AndroidRuntime(401): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) 
03-20 09:27:06.901: E/AndroidRuntime(401): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-20 09:27:06.901: E/AndroidRuntime(401): at android.os.Looper.loop(Looper.java:123) 
03-20 09:27:06.901: E/AndroidRuntime(401): at android.app.ActivityThread.main(ActivityThread.java:4627) 
03-20 09:27:06.901: E/AndroidRuntime(401): at java.lang.reflect.Method.invokeNative(Native Method) 
03-20 09:27:06.901: E/AndroidRuntime(401): at java.lang.reflect.Method.invoke(Method.java:521) 
03-20 09:27:06.901: E/AndroidRuntime(401): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
03-20 09:27:06.901: E/AndroidRuntime(401): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
03-20 09:27:06.901: E/AndroidRuntime(401): at dalvik.system.NativeStart.main(Native Method) 

我用户RestClient libraryfot解析json。这是我的parse_if_update Asyntask:

public static String parse_if_update(String jsonResponse) { 
    String update = ""; 
    try { 
     JSONObject json = new JSONObject(jsonResponse); 
     update = json.getString("update"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return update; 
} 

这是什么错?我认为这关系到我的asyntask因为我asyntask运行几次,有时...

+0

这行上的代码是什么:'notifService.java:182'? – 2013-03-20 10:40:43

回答

1

NullPointerExceptionJSONTokener,这让我觉得你jsonResponse对象null抛出。添加一个这样的支票,你应该没问题:

if (jsonResponse != null) { 
    JSONObject json = new JSONObject(jsonResponse); 
    update = json.getString("update"); 
} 

else 
    update = "response was null!"; 
+0

我这样做,但我仍然得到该错误 – Fcoder 2013-03-20 12:49:51

+0

提供整个notifService.java文件和行号的新例外,我会看看。你可以使用http://paste.ubuntu.com – Shade 2013-03-20 12:55:19