2016-10-07 4 views
4

Это мой код:BSON документ Json в Java

MongoDBSingleton dbSingleton = MongoDBSingleton.getInstance(); 
MongoDatabase db; 

try { 
    db = dbSingleton.getTestdb(); 
    MongoIterable<String> mg = db.listCollectionNames(); 
    MongoCursor<String> iterator=mg.iterator(); 

    while (iterator.hasNext()) { 
     MongoCollection<Document> table = db.getCollection(iterator.next()); 

     for (Document doc: table.find()) { 
      System.out.println(doc.toJson()); 
     } 
    } 

} 

Это выход toJson:

"modified" : { "$date" : 1475789185087} 

Это мой выход toString:

{"modified":"Fri Oct 07 02:56:25 IST 2016"} 

Я хочу Формат строки в Json, как это сделать?

+0

Какова ваша версия монго и версия драйвера java? – notionquest

+0

My mongo - 3,2, а драйвер - 3,3 –

ответ

2

Нет, невозможно изготовить простой JSON. Пожалуйста, обратитесь к этому link.

Однако он может производить JSON в двух режимах.

1) Строгий режим - вывод, что вы уже получили

2) Режим Shell

Режим Shell: -

JsonWriterSettings writerSettings = new JsonWriterSettings(JsonMode.SHELL, true);   
System.out.println(doc.toJson(writerSettings)); 

Выход: -

"createdOn" : ISODate("2016-07-16T16:26:51.951Z") 

MongoDB Extended JSON

+0

, но как преобразовать этот «createdOn»: ISODate («2016-07-16T16: 26: 51.951Z») в Date(), –

0

К сожалению, IMO, поддержка MongoDB Java не работает.

Тем не менее, есть @deprecated класса в Монго-Java-драйвере, который вы можете использовать:

String json = com.mongodb.util.JSON.serialize(document); 
System.out.println("JSON serialized Document: " + json); 

Я использую это, чтобы произвести fasterxml (Джексон) совместимый JSON от Document объекта, который я можно десериализовать через new ObjectMapper().readValue(json, MyObject.class).

Однако я не уверен, что они ожидают от вас, что класс JSON устарел. Но пока это все еще в проекте (по версии 3.3).

Я импортировать следующий в моем П:

<dependency> 
    <groupId>org.mongodb</groupId> 
    <artifactId>mongodb-driver-async</artifactId> 
    <version>3.4.2</version> 
</dependency> 
<!-- Sadly, we need the mongo-java-driver solely to serialize 
    Document objects in a sane manner --> 
<dependency> 
    <groupId>org.mongodb</groupId> 
    <artifactId>mongo-java-driver</artifactId> 
    <version>3.4.2</version> 
</dependency> 

Я использую драйвер асинхронного для фактически извлекая и толкая обновление Монго, и водитель не Асинхры исключительно для использования JSON.serialize метод.

0

В теории мы должны использовать toJSON() пер ... https://jira.mongodb.org/browse/JAVA-1770

Тем не менее, кажется, что, по крайней мере, через 3,6, toJSON() не поддерживается на различных типах старый JSON.serialize() метод обрабатывается без проблем, таких как объекты AggregateIterable<Document>, выданные aggregate().

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