Gson - 检查节点/元素存在的正确方法

时间:2013-11-25 04:46:02

标签: java android json parsing gson

当我有JsonObject时,为了从中检索指定的元素成员,会有几种方法,例如get()和其他getAsXXX()

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

我的问题是,isJsonNull()是检查元素是否存在的方法吗?我对Json的文档感到有些困惑。

2 个答案:

答案 0 :(得分:6)

根据docs JsonNullJsonElementJsonObject,而不是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