当前位置: 移动技术网 > IT编程>移动开发>Android > json-gson:.isJsonNull()问题-堆栈溢出

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

2018年09月06日  | 移动技术网IT编程  | 我要评论

托普仪器,湖北天门,战玄霄

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

看起来这是一个简单的例子,文件撒谎-或者至少是被误解了。幸运的是,代码并不是那么简单,而且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举个例子。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网