如何在Java中检查JSON对象是否为空?

时间:2012-01-21 16:41:56

标签: java json isnull

在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

2 个答案:

答案 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 APIisNull检查值NULL,在您的情况下不是这样。

如果'null_object_1'的值为String,则需要使用String temp = getString("keyName")并检查

!("".equals(temp));