如何使用Jackson序列化为java.util.List和java.util.Map [英] How to serialize to java.util.List and java.util.Map with Jackson

查看:52
本文介绍了如何使用Jackson序列化为java.util.List和java.util.Map的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Is it possible to serialize Java objects to lists and maps with Jackson library directly? I mean not to String, not to byte[], but to java.util.Map and java.util.List.

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

This might be helpful when filtering out unnecessary fields dynamically.

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

I can do it in two steps, by first converting to 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作为目标类型它也很好:

It works as well for Object.class as a target type:

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

这篇关于如何使用Jackson序列化为java.util.List和java.util.Map的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆