3

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

{"name":"ISPC Seychelles","company":{"name":"ISPC Seychelles","id":3427640}}

但有时公司属性设置为空:

{"name":"京都威斯汀都酒店", "company":null}

我已经这样定义了我的类(对不起,公共访问修饰符,当我得到这段代码工作时会改变这些:)):

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:

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 中的第一个示例填充公司元素时,这可以正常工作:

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

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

京都威斯汀都酒店;空值

我想要的是以下输出:

京都威斯汀都酒店;公司:无

4

1 回答 1

0

toString()表示Company由对象控制,因此如果对象为空Company,则无法获得所需的表示。Company做到这一点的唯一方法是在你的Entry班级中有以下类似的东西' toString()

class Entry {
  ...
  ...

    public String toString() {
        return  name + "; " + (company != null ? company : "Company: null");
    }
}
于 2012-09-06T20:37:12.347 回答