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。。