2013-11-25 36 views
1

當我有一個JsonObject,以從中檢索指定的元素成員,將有一對夫婦的方法,例如,get()getAsXXX()GSON - 適當的方式來檢查節點/元素實存

JsonPrimitive childNode1 = parent.getAsJsonPrimitive("key1); 
JsonArray childNode2 = parent.getAsJsonArray("key2); 
JsonElement childNode3 = parent.get("key3); 

我的問題是,是isJsonNull()檢查元件是否存在的方法? Json的文檔讓我有些困惑。

+0

對於java有互聯網上的各種JSON庫。那麼你使用哪個庫。給JSON庫和文檔的鏈接 –

+0

@Thuy Trinh看看我的答案。 – GrIsHu

+0

@Veer感謝您指出。剛剛變成了Gson。 –

回答

5

按照docsJsonNullJsonElement但不是JsonObject(其本身是一個JsonElement)。使用

JsonElement element = source.get(propertyName); 
if (!(element instanceof JsonNull)) { 
    JsonObject propertyToBeCopied = (JsonObject) element; 
} 

將返回澆鑄到JsonObject如果是類型JsonNull的不是JsonElement

A null參考值不是JsonNull的值。 (value == null)value.isJsonNull()不一樣。他們是非常不同的。

該文檔描述了致電JsonObject.get(String)返回"null if no such member exists."他們不說JsonNull返回。

JsonElement.isJsonNull()的調用不檢查JsonElement參考是否爲null參考。實際上,如果它是一個null參考,調用它的方法會拋出一個NullPointerException。它正在檢查它是否是JsonNull實例。

+0

謝謝。然而,關於上面的代碼片斷,爲什麼不使用'''source.getAsJsonObject()'''而不是這樣的castings? –

+0

我剛剛給你解釋了一個簡單的例子。 – GrIsHu

相關問題