这是我的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");
它奏效了。
答案 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类的对象