我正在使用Jackson Json。如果类扩展了ArrayList,我无法序列化类字段。
类别:
public class DataElement {
private Date date;
private int val1;
private int val2;
// constructor, getters, setters
}
public class DataArray extends ArrayList<DataElement> {
private String info;
private int num;
// constructor, getters, setters
}
序列化:
ObjectMapper jsonMapper = new ObjectMapper();
jsonMapper.writeValue(new File("path"), dataArray);
结果文件仅包含DataElements:
[ {
"date" : 1446405540000,
"val1" : 10296,
"val2" : 30365
}, {
"date" : 1446405600000,
"val1" : 40164,
"val2" : 20222
} ]
'num'和'info'不会保存到文件中。
如何保存包含其字段的完整课程?
答案 0 :(得分:2)
杰克逊将根据JsonFormat.Shape
序列化您的POJO。对于ArrayList
的{{1}}对象。您可以使用注释将形状更改为ARRAY
。
OBJECT
确保@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public class DataArray extends ArrayList<DataElement> {
有一个getter,例如返回DataArray
ArrayList
当我尝试上面的代码时,我在生成的JSON
中看到了这个字段public ArrayList<DataElement> getContents() {
return new ArrayList<>(this);
}
您可以使用"empty":false
来阻止其出现