如果在JArray - Java中不存在Element,则循环停止

时间:2017-04-04 19:09:11

标签: java json

我有一些处理JSON字符串的代码;它有两个对象(一个叫Code,另一个叫Result

Result是一个数组 - 我知道这个数组中有62个元素,我可以通过将数组的长度打印到控制台来证明它。

以下是Result数组中两个元素的示例,为简单起见,此处单独显示:

  

示例1 -   {"名称":" AName"" ID":1,"问题":"就绪&#34 ;,? " QuestionAnswered":" 1"}

     

示例2 - {"名称":" AName"," ID":1,"问题":"准备就绪?"}

问题是我需要获取QuestionAnswered的值(如果它们存在) - 但是当它们不存在时(如示例2中所示),我的for循环停止并且不会继续通过数组的其余部分...

                JSONObject jsono = new JSONObject(responseString);
                JSONArray jarray = jsono.getJSONArray("Result");

                for (int i = 0; i < jarray.length(); i++) {

                    JSONObject object = jarray.getJSONObject(i);

                    Details answer = new Details ();
                    answer.setAnswer(object.getString("QuestionAnswered"));
                    answer.setAnswerID(object.getInt("ID"));
                    createDB.addToWorksheetAnswers(answer);
                    }
                }

我尝试添加if (object.getString("Answer") != null),但它没有任何区别。

                for (int i = 0; i < jarray.length(); i++) {

                    JSONObject object = jarray.getJSONObject(i);

                    if (object.getString("QuestionAnswered") != null) {
                      Details answer = new Details ();
                      answer.setAnswer(object.getString("QuestionAnswered"));
                      answer.setAnswerID(object.getInt("ID"));
                      createDB.addToWorksheetAnswers(answer);
                     }
                    }
                }

为什么for循环停止?我可以这样做吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

我从未亲自使用过这个库,但根据文档看来,如果提供的密钥没有映射,则会抛出NullPointerException(因为该方法是getJsonString(name).getString()的快捷方式),请查看以下链接:http://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html#getJsonString-java.lang.String-

看起来您应该能够使用getJsonString(name)方法来使用空检查,如果检查通过,则获取结果的toString()值。

如果您使用Android的JSON库,那么如果映射不存在,它似乎也会抛出异常: https://developer.android.com/reference/org/json/JSONObject.html#getString(java.lang.String)。在这种情况下,您可以使用has(name)来确定在尝试检索映射之前是否存在映射。 https://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)

希望这有帮助。