首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何反序列化空对象属性

如何反序列化空对象属性
EN

Stack Overflow用户
提问于 2012-09-06 19:10:21
回答 1查看 368关注 0票数 3

我有一些json,其中有一系列类似于这样的条目(我已经将其简化为关注相关问题,这就是为什么它看起来有些多余):

{“名称”:“ISPC塞舌尔”,“公司”:{“名称”:“ISPC塞舌尔”,“id”:3427640}

然而,有时公司属性设置为空:

{“名称”:“京都宫子威斯汀”、“公司”:null}

我已经像这样定义了我的类(对于公共访问修饰符来说,很抱歉,当我得到这段代码:)时,将修改这些类):

代码语言:javascript
复制
class Entry {
  public String name=;
  public Company company;
  public String toString() {
      return  name + ";" + company;
  }
}

class Company {
    public String name;
    public int id;
    public String toString() {
        return "Company: " + name;
    }
}

在我的代码中,我尝试使用gson来反序列化包含在名为output的变量中的JSON:

代码语言:javascript
复制
while ((output = br.readLine()) != null) {
    Gson gson = new Gson();
    Reply reply = gson.fromJson(output, Reply.class); 
    Entry[] entries = reply.entries;
    for (int i=0; i < entries.length; i++) {
        System.out.print(entries[i]+ "\n") ;
    }
}

如JSON中的第一个示例所示,当填充了company元素时,这种方法工作得很好:

塞舌尔ISPC;公司: ISPC塞舌尔

但是,如果没有像第二个示例那样填充元素,我将得到以下输出:

Westin Miyako京都;空

我想要的是以下输出:

Westin Miyako京都;公司:空

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-06 20:37:12

toString()表示CompanyCompany对象控制,因此如果Company对象为null,则无法获得所需的表示。唯一的方法是在您的Entry类‘toString()中有类似下面的内容

代码语言:javascript
复制
class Entry {
  ...
  ...

    public String toString() {
        return  name + "; " + (company != null ? company : "Company: null");
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12306800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档