Google的Gson.toJson(Object src)没有转换布尔值。 例如,My 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" }
即使有值,也会丢失布尔值。
答案 0 :(得分:1)
仅当字段定义为transient
或static
时,Gson才会对字段进行序列化。
如果您还没有将布尔字段定义为静态或瞬态,则json应该具有该字段。
我不确定您是如何使用isTeen()
方法将值设置为布尔字段的。它应该给出编译错误,除非你有非平凡的"是"布尔字段的方法。 "是"方法基本上相当于" 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。