Anindya Chatterjee Anindya Chatterjee - 2 months ago 32
JSON Question

How to do conversion between org.bson.Document and standard json?

My use case is to convert any arbitrary POJO to Map and back from Map to POJO. So I ended up using the strategy POJO -> json -> org.bson.Document and back to org.bson.Document -> json -> POJO.

I am using gson to convert POJO to json,

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


then

Document doc = Document.parse(json);


to create the document and it is easy. But other way around is problematic.
document.toJson()
is not giving standard json for long, timestamp etc and gson is complaining while deserialising to POJO. So I need a way to convert org.bson.Document to standard json.

NOTE: I want to avoid using mongo java driver or morphia as this work does not relate to mongo in anyway.

Answer

My use case is to convert any arbitrary POJO to Map and back from Map to POJO.

You could use Jackson, a popular JSON parser for Java:

ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = 
    mapper.convertValue(foo, new TypeReference<Map<String, Object>>() {});
Foo anotherFoo = mapper.convertValue(map, User.class);

I have no ideia why the JSON or the BSON come into play.