我想创建一个行为类似于数组列表的自定义列表,只是它具有一个附加属性。我创建了CustomList类,并在CustomListTest类中进行了测试。但是,问题在于在json序列化中没有显示额外的属性。因此,下面的代码仅打印出[1,2,3]。有没有一种方法可以使属性也包含在序列化中?
import java.util.ArrayList;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class CustomList<T> extends ArrayList<T> {
private boolean attribute = false;
}
public class CustomListTest {
public static void main(String[] args) throws JsonProcessingException {
CustomList<Integer> a = new CustomList<Integer>();
a.add(1);
a.add(2);
a.add(3);
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(a));
}
}
答案 0 :(得分:0)
问题是没有名称列表的字段。在JSON中,您无法将属性添加到数组。如果要获取序列化表格 {“ attribute”:false,“ list”:[]},则需要这样的Java对象:
private static class ComposeList<T> {
boolean attribute = false;
ArrayList<T> list = new ArrayList<>();
}
希利斯已经说过:“优先考虑组成而不是继承”。这是Java中的一般规则。继承使设计通常不灵活。