2012-01-21 165 views
5

在Java中,如果我使用以下JSON字符串作为示例,我将如何检查对象是否为空/空如何检查Java中的JSON对象是否为空?

{"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(因为如果他们不为空/空)。

有没有人有解决方案?

编辑: 通过 “对象”,我其实是array

回答

10

既不的这两件事情是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并根据结果采取相应措施。

+0

谢谢澄清Java的null(:我太习惯于使用PHP(其中检查null通常为空和空) – 92Jacko

+0

很高兴我可以帮助。老实说,恕我直言,我会避免使用'null' Java'null'具有不等于'0'或“空”的特殊含义 - 它只能分配给对象引用变量,并且表示该变量没有分配给它的对象引用。 –

2

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

如果“null_object_1”值的字符串,你需要使用字符串temp = getString("keyName")和检查

!("".equals(temp));