检查JSON节点是否为空

时间:2014-07-22 23:34:42

标签: java android json

我从api返回一些JSON,根对象的一个​​子节点是item

我想检查此节点上的此值是否为null。这是我正在尝试的内容,当节点实际为空时,它正在抛出JSONException

if (response.getJSONObject("item") != null) {

// do some things with the item node

} else {

// do something else

}

logcat的

07-22 19:26:00.500: W/System.err(1237): org.json.JSONException: Value null at item of type org.json.JSONObject$1 cannot be converted to JSONObject

请注意,此item节点不仅仅是字符串值,而是子对象。提前谢谢!

4 个答案:

答案 0 :(得分:3)

好的,所以如果节点总是存在,你可以使用.isNull()方法检查null。

if (!response.isNull("item")) {

// do some things with the item node

} else {

// do something else

}

答案 1 :(得分:1)

我假设您的回复来自httpClient对吗?如果是这样,你可以检查它的长度。

HttpResponse response = httpclient.execute(httppost);
String responseBody = EntityUtils.toString(response.getEntity());

String.valueOf(responseBody.length())

如果你得到任何东西应该大于0我想:)

答案 2 :(得分:1)

对JsonNode字段进行正确的空检查:

JsonNode jsonNode = response.get("item");

if(jsonNode == null || jsonNode.isNull()) { }

该项目要么不存在,要么显式设置为null。

答案 3 :(得分:-2)

首先,您可以使用方法has("");

检查密钥是否存在
if(response.has("item")) {

    if (response.getJSONObject("item") != null) {

        // do some things with the item node

    } else {

        // do something else

    }
}