当我有一个
JsonObject
时,为了从中检索指定的元素成员,会有几个方法,例如,get()
和其他getAsXXX()
:
JsonPrimitive childNode1 = parent.getAsJsonPrimitive("key1);
JsonArray childNode2 = parent.getAsJsonArray("key2);
JsonElement childNode3 = parent.get("key3);
我的问题是,
isJsonNull()
是检查元素是否存在的方法吗?我对 Json 的文档有点困惑。
您可以使用 JsonObject.has() 来确定元素是否存在。
参见代码定义。
根据docs
JsonNull
是一个JsonElement
,但不是JsonObject
(它本身就是一个JsonElement
)。使用
JsonElement element = source.get(propertyName);
if (!(element instanceof JsonNull)) {
JsonObject propertyToBeCopied = (JsonObject) element;
}
将返回一个
JsonElement
,如果它不是 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
实例。