Java 检查JSONObject是否为null,这样做会使我的应用程序崩溃
我试图查看Java 检查JSONObject是否为null,这样做会使我的应用程序崩溃,java,android,json,Java,Android,Json,我试图查看JSONObject'FirstItemMGNAME2'是否为null,但是当它为null时,只会使程序崩溃,当它不为null时,只会显示else语句 简而言之,我只是想看看JSONObject中是否存在字符串,并创建一个if语句 JSONObject FirstItemMGNAME2 = FirstItemArrayMG.getJSONObject(FirstItemArrayMG.length() - 2); if (FirstItemMGNAME2.isNull("name"))
JSONObject
'FirstItemMGNAME2'是否为null,但是当它为null时,只会使程序崩溃,当它不为null时,只会显示else语句
简而言之,我只是想看看JSONObject中是否存在字符串,并创建一个if语句
JSONObject FirstItemMGNAME2 = FirstItemArrayMG.getJSONObject(FirstItemArrayMG.length() - 2);
if (FirstItemMGNAME2.isNull("name")){
FirstItemIDMGNAME2 = "1";
}
else {
FirstItemIDMGNAME2 = FirstItemMGNAME2.getString("name");
}
这是应用程序崩溃时的日志
08-21 16:14:40.237 20945-20945/com.kripzy.lolbuilds E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.kripzy.lolbuilds, PID: 20945
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:337)
at android.widget.ListView.setAdapter(ListView.java:491)
at com.kripzy.lolbuilds.Aatrox$JSONTask.onPostExecute(Aatrox.java:447)
at com.kripzy.lolbuilds.Aatrox$JSONTask.onPostExecute(Aatrox.java:67)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.-wrap1(AsyncTask.java)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
当人们在这里要求我的所有代码时,(由于正文被限制为30000个字符,所以必须在pastebin上)尝试optJSONObjet(字符串arg1)
。如果没有字段,则返回null
getJSONObject
将抛出JSONException
,而不是返回null
或
FirstItemMGNAME2
可能是null
尝试与Json字符串比较,而不是与类似Json对象的字符串比较
if (FirstItemMGNAME2.getString("name").equals("")){
FirstItemIDMGNAME2 = "1"
}
else {
FirstItemIDMGNAME2 = FirstItemMGNAME2.getString("name");
}
如果这无法修复,请发送您的json结构修复,只需将其放入try-catch块中-
try {
JSONObject FirstItemMGNAME3 = FirstItemArrayMG.getJSONObject(FirstItemArrayMG.length() - 3);
if (FirstItemMGNAME3.isNull("name")){
FirstItemIDMGNAME3 = "1";
}
else {
FirstItemIDMGNAME3 = FirstItemMGNAME3.getString("name");
}
} catch (JSONException c) {
c.printStackTrace();}
您仍在尝试访问一个空对象,因此,NPE。@Shaishav如何修复此问题?错误的logcat消息是什么?@shawon在这里-它是List.size()上的空指针异常。请提供您的完整代码。请详细定义一点关于optJSONObject(字符串agr1)的内容。如果存在并且是JSONObject,则JSONObject optJSONObject(字符串名称)返回按名称映射的值,否则返回null。但是isNull(key)check和optString()呢?我告诉过的字段是jsonobject的元素。在上面的代码中,参数不为null。它们是“名字”。另外,我没有测试参数是否为null XD。无论如何,提问者的问题似乎不是解析jsonobject。。