• json-gson:.isJsonNull()问题-堆栈溢出


    不用管我下面的第一个答案。我读得太快了。

    看起来这是一个简单的例子,文件撒谎-或者至少是被误解了。幸运的是,代码并不是那么简单,而且gson是一个开源项目。

    这是 JsonObject.get(String):

    /**
       * Returns the member with the specified name.
       *
       * @param memberName name of the member that is being requested.
       * @return the member matching the name. Null if no such member exists.
       */
      public JsonElement get(String memberName) {
        if (members.containsKey(memberName)) {
          JsonElement member = members.get(memberName);
          return member == null ? JsonNull.INSTANCE : member;
        }
        return null;
      }

    这里是 members人口:

    /**
       * Adds a member, which is a name-value pair, to self. The name must be a String, but the value
       * can be an arbitrary JsonElement, thereby allowing you to build a full tree of JsonElements
       * rooted at this node.
       *
       * @param property name of the member.
       * @param value the member object.
       */
      public void add(String property, JsonElement value) {
        if (value == null) {
          value = JsonNull.INSTANCE;
        }
        members.put($Gson$Preconditions.checkNotNull(property), value);
      }

    添加到 members是为Java类中定义的每个成员创建的-它不是基于JSON中的内容。(对于有兴趣的人来说,visitFieldsReflectively方法ReflectingFieldNavigator(人口成员。)

    因此,我想混淆了“如果没有议员”这一句中“成员”一词的含义。基于代码,我认为JavaDoc的作者指的是Java类中定义的一个成员。对于gsonAPI的临时用户-就像我自己一样-我假设“成员”指的是JSON中的一个对象元素。

    现在,这个问题清楚了吗?

    基于快速阅读问题的第一个答案(为有用的链接保留):

    null引用不是 JsonNull价值。(value == null)value.isJsonNull()。他们很不一样。

    文档描述了调用 JsonObject.get(String)如果不存在这样的成员,则返回“[null]”。他们没有这么说 JsonNull会被归还。

    打电话给 JsonElement.isJsonNull()不是检查 JsonElement引用是null推荐信。事实上,如果是null引用时,对其调用方法将引发NullPointerException。它在检查它是否是JsonNull举个例子。

  • 相关阅读:
    (转)描述线程与进程的区别?
    Python学习笔记:ceil、floor、round、int取整
    Python学习笔记:SQL中group_concat分组合并操作实现
    Python学习笔记:pd.rank排序
    函数声明
    Dictionary 介绍
    Tuple介绍
    List介绍
    DataGridView 如何退出 编辑状态
    C#实现打印与打印预览功能
  • 原文地址:https://www.cnblogs.com/jiangzhishan/p/9593326.html
Copyright © 2020-2023  润新知