在Android中的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.(JSONObject.java:154) 03-21 11:38:07.033: E/AndroidRuntime(8439): at org.json.JSONObject.(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测试。
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; }
那你还有问题吗?
下面的代码将起作用:
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; }
使用以下命令检查字符串“update”是否为null:
if (!json.isNull("update")) { update = json.getString("update"); }
如果你不检查它,它可以引发nullpointer
- Android Webview应用程序上下文
- 从Android上的Calendar Provider中删除事件
- 在`Service`类中运行新的`runnableThread`时出现java.lang.ClassCastException
- 基于堆栈的机器取决于基于寄存器的机器?
- 使用身份validationcookie打开WebSocket连接
- 随机com.android.volley.NoConnection错误,java.io.InterruptedIOException,statuscode = 0
- NumberPicker不适用于键盘
- AsyncTask在后台运行时看不到ProgressDialog
- 在servlet中创建json对象