2012-01-21 63 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));