GSON toJson()方法为POJO返回null

时间:2018-12-11 11:47:41

标签: java json serialization gson

这是我的POJO课

public class ResourceRecord {

    public ResourceRecord() {}

    public String name;
    public Integer ttl;
    public String type;
    public String rr;

    @SerializedName("class")
    public String dnsClass;

}

这是序列化:

ResourceRecord rr = new ResourceRecord() {
    {
        name = "8.8.8.8";
        dnsClass = "IN";
        ttl = 600;
        rr = "0431shangmao.com.";
        type = "A";
    }
};

String rrStr = new Gson().toJson(rr);

显然,rrStr得到null。为什么?

我尝试用@Expose注释字段,但结果保持不变。

更新: 我改为构造为:

ResourceRecord rr = new ResourceRecord("8.8.8.8", 900,"A","1.dnstest.netshade.net.", "IN");

它奏效了。

2 个答案:

答案 0 :(得分:2)

之所以不起作用,是因为您在使用花括号实例化时正在创建ResourceRecord的匿名内部类:

ResourceRecord rr = new ResourceRecord() {
      {
          name = "8.8.8.8";
          dnsClass = "IN";
          ttl = 600;
          rr = "0431shangmao.com.";
          type = "A";
      }
  };

而且Gson不支持序列化匿名子类。

答案 1 :(得分:1)

尝试一下

Gson gson = new GsonBuilder().create(); String json = gson.toJson(obj);

obj是pojo类的对象