检查JSONObject密钥是否存在

时间:2015-09-09 03:10:13

标签: android json jsonexception

我正在向后端发出api电话,后端始终有JSONArray series,有时会有JSONArray places。在下面的代码中,我试图编写一个if语句,表示只要没有places数组,就发出另一个http请求。但是,我没有得到nullpointer,它只是抛出一个JSON Exception,说没有值的地方。我可以将什么作为终止条件,因为places没有价值?我尝试了places == null但是没有用。

try{
    JSONArray places = passingObject.getJSONArray("places");
    JSONArray series = passingObject.getJSONArray("series");

    if(some condition){
       //do something else
    }
}catch(JSONException e){
    Log.d("JSON EXCEPTION" e.getMessage());
}

2 个答案:

答案 0 :(得分:4)

检查对象是否有名为places的键。

if (passingObject.has("places") {
    JSONArray places = passingObject.getJSONArray("places");
} else {
    askServerAgain();
}

答案 1 :(得分:2)

或者你可以使用 http://www.json.org/javadoc/org/json/JSONObject.html#optJSONArray(java.lang.String)

JSONArray places = passingObject.optJSONArray("places");
if(places == null){...}

optJSONArray();如果没有这样的键,或者它的值不是JSONArray,则返回null。