Java Can';如果扩展了ArrayList,则不能使用Jackson Json类字段序列化
我正在使用Jackson Json。若类扩展了ArrayList,则无法序列化类字段 类别:Java Can';如果扩展了ArrayList,则不能使用Jackson Json类字段序列化,java,json,jackson,Java,Json,Jackson,我正在使用Jackson Json。若类扩展了ArrayList,则无法序列化类字段 类别: public class DataElement { private Date date; private int val1; private int val2; // constructor, getters, setters } public class DataArray extends ArrayList<DataElement> { pri
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
}
结果文件仅包含数据元素:
[ {
"date" : 1446405540000,
"val1" : 10296,
"val2" : 30365
}, {
"date" : 1446405600000,
"val1" : 40164,
"val2" : 20222
} ]
“num”和“info”未保存到文件中
如何保存完整类及其字段?Jackson将根据
JsonFormat.Shape
对POJO进行序列化。对于ArrayList
对象,该对象是ARRAY
。可以使用注释将形状更改为对象
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public class DataArray extends ArrayList<DataElement> {
当我尝试上面的代码时,我在生成的JSON中看到了这个字段
"empty":false
您可以使用
@JsonIgnore
来防止出现这种情况在JSON中您会怎么看?将两个任意键/值对放入JSON数组(这就是JSON中的ArrayList)是不可能表示的。不要扩展ArrayList,只将ArrayList作为字段包含在类中。@peeskillet,ArrayList可能会以某种方式进行包装,例如:{“num”:“123”,“info”:“information”,“ArrayList”:[{“date”:1446405540000,“val1”:10296,“val2”:30365},{“date”:1446405600000,“val1”:40164,“val2”:20222}
Jackson Json中有注释,但我无法从中获得请求的结果。那么它不再是一个Json数组,而是一个Json对象,在这种情况下,我个人更喜欢组合而不是继承。那就是我。我不知道也许你有保留遗产的要求。但不管怎么说,@ManosNikolaidis似乎有下面的解决方案。@peeskillet在这种情况下,我也更喜欢合成。好的,我会尝试转换成合成@ManosNikolaidis,谢谢你的回答。
public ArrayList<DataElement> getContents() {
return new ArrayList<>(this);
}
"empty":false