gpt4 book ai didi

java - 为什么在 GSON 中使用 JsonNull?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:54:04 24 4
gpt4 key购买 nike

文档说 JsonObject#get如果不存在这样的成员,则方法返回 null。那不准确;有时会返回一个 JsonNull 对象而不是 null

检查 GSON 中是否存在特定字段的成语是什么?我希望避免这种笨拙的风格:

jsonElement = jsonObject.get("optional_field");
if (jsonElement != null && !jsonElement.isJsonNull()) {
s = jsonElement .getAsString();
}

为什么 GSON 使用 JsonNull 而不是 null

what 有答案nullJsonNull 的区别。在我上面的问题中,我正在寻找原因。

最佳答案

据推测,Gson 想要模拟值不存在和 JSON value null 存在之间的差异。在 JSON 中。例如,这两个 JSON 片段之间存在差异

{}
{"key":null}

您的应用程序可能认为它们相同,但 JSON 格式不同。

打电话

JsonObject jsonObject = new JsonObject(); // {}
jsonObject.get("key");

返回 Java 值 null,因为不存在具有该名称的成员。

打电话

JsonObject jsonObject = new JsonObject();
jsonObject.add("key", JsonNull.INSTANCE /* or even null */); // {"key":null}
jsonObject.get("key");

返回 JsonNull 类型的实例(JsonNull.INSTANCE 引用的单例),因为确实存在具有该名称的成员并且其值为 JSON null,由JsonNull 值。

关于java - 为什么在 GSON 中使用 JsonNull?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39114293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com