[英]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.