Gson.toJson不从对象转换布尔值



谷歌的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" }
即使存在值,也缺少

布尔值。

只有当字段定义为transientstatic时,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。

最新更新