gpt4 book ai didi

java - 扩展 ArrayList 的类无法正确序列化

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:28 26 4
gpt4 key购买 nike

我想创建一个行为类似于数组列表的自定义列表,只不过它有一个附加属性。我创建了 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));
}
}

最佳答案

问题是没有包含姓名列表的字段。在 JSON 中,您无法向数组添加属性。如果您想获取序列化表格{"attribute":false,"list":[]},您需要一个这样的 Java 对象:

private static class ComposeList<T> {
boolean attribute = false;
ArrayList<T> list = new ArrayList<>();
}

正如 chylis 所说:“更喜欢组合而不是继承”。这是 Java 中的一般规则。继承常常使设计变得不灵活。

关于java - 扩展 ArrayList 的类无法正确序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53094470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com