这是我的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");


而且有效。

最佳答案

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

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

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

08-17 08:04