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

我的用例是将任意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()没有为long,timestamp等提供标准json,并且在反序列化为POJO时gson正在抱怨。 所以我需要一种方法将org.bson.Document转换为标准的json。

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

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

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

 ObjectMapper mapper = new ObjectMapper(); // Convert POJO to Map Map map = mapper.convertValue(foo, new TypeReference>() {}); // Convert Map to POJO Foo anotherFoo = mapper.convertValue(map, Foo.class); 

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