谷歌的Gson。toJson(对象src)不转换布尔值。例如,我的Java对象是:
class MyObj {
private String name;
private boolean teen;
//getter,setter ommitted...
}
MyObj obj = new MyObj();
obj.setName("Me");
obj.isTeen(false);
Gson.toJson(obj);
在转换这个对象时它会像这样写
MyObj { "name" : "Me" }
即使存在值,也缺少布尔值。
只有当字段定义为transient
或static
时,Gson才不会序列化字段。
如果你没有定义布尔字段为静态或瞬态,json应该有这个字段。
我不确定你如何使用isTeen()
方法将值设置为布尔字段。它应该给出编译错误,除非你对布尔字段有重要的"is"方法。"is"方法基本上相当于字符串/其他字段的"get"方法。通常,它不会用来设置值。
我刚刚提供了getter和setter的完整代码。请检查一下是否可以。
public class MyObj {
private String name;
private boolean teen;
public String getName() {
return name;
}
public boolean isTeen() {
return teen;
}
public void setName(String name) {
this.name = name;
}
public void setTeen(boolean teen) {
this.teen = teen;
}
}
主要方法:-
public static void main(String[] args) {
Gson gson = new Gson();
MyObj obj = new MyObj();
obj.setName("Me");
obj.setTeen(false);
System.out.println(gson.toJson(obj));
}
输出: -
{"name":"Me","teen":false}
有趣的一点是,即使您没有为布尔字段设置任何值。它将采用默认值false,生成的JSON将具有false。