我的用例是将任意POJO转换为Map,然后从Map转换回POJO。所以我最终使用策略POJO - > json - > org.bson.Document并返回到org.bson.Document - > json - > POJO。如何在Java中将POJO转换为Map,反之亦然?
我使用GSON到POJO转换成JSON,
Gson gson = new GsonBuilder().create();
String json = gson.toJson(pojo);
然后
Document doc = Document.parse(json);
创建文档,很容易。但其他解决方法是有问题的。 document.toJson()
没有给长的标准json,timestamp等,而gson在对POJO进行反串行化时抱怨。所以我需要一种将org.bson.Document转换为标准json的方法。
注意:我想避免使用mongo java驱动程序或morphia,因为此工作与mongo无关。
“标准json for timestamp”是什么意思? JSON标准没有说明时间戳是如何编码的。 – yole
文档生成json只要{“$ numberLong”:1245}不能被gson解析。通过标准的json,我想表示json就像{“abc”:1245},它可以被反序列化为字段名称abc。 –
定义*标准json *的含义,因为你所说的大部分内容都不准确。 Timestamp没有*标准*格式,或任何其他非原始字符串,数字,布尔值或空值的对象的任何其他字符串表示形式。 –