2017-02-02 17 views
2

Я использую Java-интерфейс MongoDB для преобразования BSON в JSON. У меня есть тестовый код.Преобразование BSON в JSON с использованием MongoDB Драйвер Java API

String input = "{ \"timestamp\" : 1486064586641 }"; 
org.bson.Document doc = org.bson.Document.parse(input); 
System.out.println("input = " + input); 
System.out.println("output = " + doc.toJson()); 

Выход:

input = { "timestamp" : 1486064586641 } 
output = { "timestamp" : { "$numberLong" : "1486064586641" } } 

Есть простой способ сделать выходной выглядеть вход?

ответ

6

Метод toONson BSON Documnet поддерживает только вывод на MongoDB Extended JSON (формат STRICT или SHELL). Если вы хотите иметь регулярные JSON, вы можете использовать com.mongodb.util.JSON класс:

String input = "{ \"timestamp\" : 1486064586641 }"; 
org.bson.Document doc = org.bson.Document.parse(input); 
System.out.println("input = " + input); 
System.out.println("output (SHELL) = " + doc.toJson(new JsonWriterSettings(JsonMode.SHELL))); 
System.out.println("output (STRICT) = " + doc.toJson(new JsonWriterSettings(JsonMode.STRICT))); 
System.out.println("output (JSON) = " + com.mongodb.util.JSON.serialize(doc)); 

Это будет генерировать следующий вывод:

input = { "timestamp" : 1486064586641 } 
output (SHELL) = { "timestamp" : NumberLong("1486064586641") } 
output (STRICT) = { "timestamp" : { "$numberLong" : "1486064586641" } } 
output (JSON) = { "timestamp" : 1486064586641} 
+0

у меня есть проблемы с ObjectId. Что, если input = "{\" timestamp \ ": 1486064586641, \" _ id \ ": {\" $ oid \ ": \" 58dd09687b4e7f108f9e7a2f \ "}}". С JSON.serialize я получаю этот результат: {"timestamp": 1486064586641, "_id": {"$ oid": "58dd09687b4e7f108f9e7a2f"}}. Timestamp в порядке, за исключением _id –

+0

Да, но почему это проблема? JSON не обрабатывает $ oid каким-либо особым образом, вы можете добавить что-то вроде «\ aaa \»: {\ "bbbb \": \ "ccc \"} "вместо $ oid - результат будет очень похожим. Что вы ожидаете? –

+0

Thx Natalja, я создал вопрос: http://stackoverflow.com/questions/43328955/bson-to-json-with-mongo-java-driver –

Смежные вопросы