有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何序列化为java。util。列表和java。util。杰克逊的地图

可以直接使用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) 个答案

  1. # 1 楼答案

    使用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}]