我有一些json,其中包含一系列看起来像这样的条目(我将其简化为专注于相关问题,这就是为什么它看起来有点多余的原因):
{“名称”:“ISPC塞舌尔”,“公司”:{“名称”:“ISPC
塞舌尔”,“id”:3427640}}
但是有时公司属性设置为null:
{“名称”:“京都威斯汀都饭店”,“公司”:空}
我已经定义了这样的类(对公共(public)访问修饰符很抱歉,当我使这段代码起作用时,这些类将更改:)):
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中的第一个示例中那样填充company元素时,这可以很好地工作:
塞舌尔ISPC;公司:塞舌尔ISPC
但是,如果不像第二个示例那样填充该元素,则会得到以下输出:
京都威斯汀都饭店;空值
我想要的是以下输出:
京都威斯汀都饭店;公司:null
最佳答案
toString()
的Company
表示形式由Company
对象控制,因此如果Company
对象为null,则无法获得所需的表示形式。唯一的方法是在Entry
类的toString()
中包含以下内容:
class Entry {
...
...
public String toString() {
return name + "; " + (company != null ? company : "Company: null");
}
}