我正在编写一个使用Gson将Java对象序列化为Json的函数。
我的问题是,它只序列化我类的原始字段,而不序列化对象字段。例如。我有两个类,如:
class TestClass {
public int i = 10;
public TestClass2 tc2;
}
class TestClass2 {
public int j = 20;
}
我的测试是:
@Test
public void shouldSerializeSimpleObjectIntoJson() {
TestClass tc = new TestClass();
String json = new Gson().toJson(tc);
System.out.println(json);
}
Json输出为:
{"i":10}
它不包含tc2的字段。
如何配置Gson以将对象递归编码为Json?
谢谢
最佳答案
该字段被忽略,因为它是null
。从documentation:
Gson中实现的默认行为是忽略空对象字段。这允许更紧凑的输出格式。但是,当JSON格式转换回Java时,客户端必须为这些字段定义默认值。
这是配置Gson实例以输出null的方法:
Gson gson = new GsonBuilder().serializeNulls().create();
如果将
tc.tc2
设置为null
以外的其他值,则应在输出文件中看到其字段。