在Java中,如果我使用以下JSON
字符串作为示例,我如何检查对象是否空/ null ?
{"null_object_1" : [], "null_object_2" : [null] }
我尝试过使用:
if(!jsonSource.isNull("null_object_1")) {/*null_object_1 is not empty/null*/}
if(!jsonSource.isNull("null_object_2")) {/*null_object_2 is not empty/null*/}
但是这些IF
语句仍然返回true(好像它们不是空/ null)。
有没有人有解决方案?
修改
通过“对象”,我实际上是指array
。
答案 0 :(得分:11)
这两件事都不是null
;他们是阵列。结果正是您所期望的。
其中一个数组为空,另一个数组包含null
的单个元素。
如果你想知道数组是否为空,你需要获取数组,然后检查它的长度。
JSONObject myJsonObject =
new JSONObject("{\"null_object_1\":[],\"null_object_2\":[null]}");
if (myJsonObject.getJSONArray("null_object_1").length() == 0) {
...
}
编辑以澄清:没有元素(空)的数组和具有null
元素的数组完全不同的东西。在第二个数组的情况下,它既不是null
也不是空的。正如我所提到的,它是一个具有单个元素null
的数组。如果您对确定是否是这种情况感兴趣,则需要获取数组,然后迭代测试每个元素以查看它是否为null
并相应地对结果进行处理。
答案 1 :(得分:2)
根据此文档JSONObject API,isNull
检查值NULL,在您的情况下不是这样。
如果'null_object_1'的值为String,则需要使用String temp = getString("keyName")
并检查
!("".equals(temp));