当我有JsonObject
时,为了从中检索指定的元素成员,会有几种方法,例如get()
和其他getAsXXX()
:
JsonPrimitive childNode1 = parent.getAsJsonPrimitive("key1);
JsonArray childNode2 = parent.getAsJsonArray("key2);
JsonElement childNode3 = parent.get("key3);
我的问题是,isJsonNull()
是检查元素是否存在的方法吗?我对Json的文档感到有些困惑。
答案 0 :(得分:6)
根据docs JsonNull
,JsonElement
是JsonObject
,而不是JsonElement
(本身就是JsonElement element = source.get(propertyName);
if (!(element instanceof JsonNull)) {
JsonObject propertyToBeCopied = (JsonObject) element;
}
)。使用
JsonElement
如果<{1}}不属于JsonObject
,则会返回JsonNull
null
。
JsonNull
引用不是(value == null)
值。 value.isJsonNull()
与JsonObject.get(String)
不同。他们是非常不同的。
文档描述了对"null if no such member exists."
的调用返回JsonNull
他们并未说明JsonElement.isJsonNull()
已返回。
对JsonElement
的调用不会检查null
引用是否为null
引用。实际上,如果它是NullPointerException
引用,则在其上调用方法将抛出JsonNull
。它正在检查它是否是{{1}}实例。
答案 1 :(得分:5)
您可以使用JsonObject.has()来确定元素是否存在,http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html