8

在 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.

4

2 回答 2

14

这两件事都不是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并相应地对结果采取行动。

于 2012-01-21T16:53:01.940 回答
2

根据本文档JSONObject APIisNull检查值 NULL,这在您的情况下不正确。

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

!("".equals(temp));
于 2012-01-21T16:52:23.470 回答