我的用例是将任意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);
Run Code Online (Sandbox Code Playgroud)
然后
Document doc = Document.parse(json);
Run Code Online (Sandbox Code Playgroud)
创建文档很容易.但其他方式是有问题的.document.toJson()没有为长,时间戳等提供标准的json,并且gson在反序列化到POJO时抱怨.所以我需要一种方法将org.bson.Document转换为标准的json.
注意:我想避免使用mongo java驱动程序或morphia,因为这项工作无论如何都与mongo无关.
cas*_*lin 31
我的用例是将任意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);
Run Code Online (Sandbox Code Playgroud)
根据Jackson文档,此方法在功能上类似于首先将给定值序列化为JSON,然后将JSON数据绑定到给定类型的值,但应该更高效,因为完全序列化不会(需要)发生.但是,相同的转换器(序列化器和反序列化器)将用于数据绑定,这意味着相同的对象映射器配置工作.