我从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
节点不仅仅是字符串值,而是子对象。提前谢谢!
答案 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
}
}