如何使用Jackson序列化为java.util.List和java.util.Map

时间:2019-03-19 22:35:28

标签: java jackson

是否可以直接使用Jackson库将Java对象序列化为列表和映射?我的意思不是String,不是byte[],而是java.util.Mapjava.util.List

这在动态过滤掉不必要的字段时可能会有所帮助。

我可以分为两个步骤,首先转换为String

ObjectMapper mapper = new ObjectMapper()
DTO dto = new DTO();
DTO[] dtos = {dto};
mapper.readValue(mapper.writeValueAsString(dto), Object.class); // Map
mapper.readValue(mapper.writeValueAsString(dtos), Object.class); // List

1 个答案:

答案 0 :(得分:2)

使用convertValue方法:

ObjectMapper objectMapper = new ObjectMapper();
Map map = objectMapper.convertValue(new Person(), Map.class);
System.out.println(map);

它对于Object.class作为目标类型也适用:

ObjectMapper objectMapper = new ObjectMapper();
Object map = objectMapper.convertValue(new Person(), Object.class);
Object array = objectMapper.convertValue(Collections.singleton(new Person()), Object.class);
System.out.println(map);
System.out.println(array);

打印:

{name=Rick, lastName=Bricky}
[{name=Rick, lastName=Bricky}]