java - 如何使用 Jackson 序列化为 java.util.List 和 java.util.Map
问题描述
是否可以直接使用 Jackson 库将 Java 对象序列化为列表和映射?我的意思不是String
,不是byte[]
,而是java.util.Map
和java.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
解决方案
使用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}]
推荐阅读
- python - 如何在 Python statsmodels adfuller 中为 maxlag 参数选择一个值?
- css - 删除 d3 表中的空格
- python - 如何让我的代码显示文本文件中的一定数量的字符
- json - 从 JSON 执行 Groovy 脚本
- c# - 如何在两个不相邻的区域上画一个字符串
- node.js - Web 驱动程序 - 如何覆盖 Microsoft Edge 的用户代理
- php - Laravel 数据库迁移用户可能来自其他类型
- java - 如何将带有参数的https post请求发送到api
- android - 如何使用 contentObserver 和 contentResolver 从 Messages 中读取已发送短信的内容?
- javascript - 在不使用 GTM dataLayer 的情况下触发自定义事件以激活 Google Optimize