繁体   English   中英

如何在Java中将POJO转换为Map,反之亦然?

[英]How to convert POJO to Map and vice versa in Java?

我的用例是将任意 POJO 转换为 Map,然后从 Map 转换回 POJO。 所以我最终使用了策略 POJO -> json -> org.bson.Document 并回到 org.bson.Document -> json -> POJO。

我正在使用 gson 将 POJO 转换为 json,

Gson gson = new GsonBuilder().create();
String json = gson.toJson(pojo);

然后

Document doc = Document.parse(json); 

创建文档,这很容易。 但其他方式是有问题的。 document.toJson()没有给出标准的 json 长,时间戳等,gson 在反序列化到 POJO 时抱怨。 所以我需要一种将 org.bson.Document 转换为标准 json 的方法。

注意:我想避免使用 mongo java 驱动程序或 morphia,因为这项工作无论如何都与 mongo 无关。

我的用例是将任意 POJO 转换为 Map,然后从 Map 转换回 POJO。

你可以使用 Jackson,一个流行的 Java JSON 解析器:

ObjectMapper mapper = new ObjectMapper();

// Convert POJO to Map
Map<String, Object> map = 
    mapper.convertValue(foo, new TypeReference<Map<String, Object>>() {});

// Convert Map to POJO
Foo anotherFoo = mapper.convertValue(map, Foo.class);

根据 Jackson 文档,此方法在功能上类似于首先将给定值序列化为 JSON,然后将 JSON 数据绑定到给定类型的值,但应该更有效,因为完全序列化不会(需要)发生。 但是,将使用相同的转换器(串行器和解串器)作为数据绑定,这意味着相同的对象映射器配置工作。

更简单,你可以使用PropertyUtils.describe(Object o)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM