Saltar al contenido

Conversión de BSON a JSON utilizando MongoDB Driver Java API

Este dilema se puede abordar de diferentes formas, pero nosotros te compartimos la que para nosotros es la resolución más completa.

Solución:

El método toJson de BSON Documnet solo admite la salida a MongoDB Extended JSON (formato STRICT o SHELL). Si desea tener JSON regular, puede usar com.mongodb.util.JSON clase:

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));

Esto generará la siguiente salida:

input  =  "timestamp" : 1486064586641 
output (SHELL) =  "timestamp" : NumberLong("1486064586641") 
output (STRICT) =  "timestamp" :  "$numberLong" : "1486064586641"  
output (JSON) =  "timestamp" : 1486064586641

La respuesta de Natalja es excelente, pero si está utilizando el controlador Mongo Java 3.8.2 hacia arriba, notará algunas advertencias de desaprobación. Si desea que la salida se vea como la entrada, puede usar RELAXED Modo JsonWriterSettings.

A continuación puede ver un ejemplo con los modos posibles y cómo se verá el JSON. También hay algunas advertencias de desaprobación y alternativas al código obsoleto:

String input = " "timestamp" : 1486064586641 ";
org.bson.Document doc = org.bson.Document.parse(input);
System.out.println("input  = " + input);
JsonWriterSettings shellMode = JsonWriterSettings.builder().outputMode(JsonMode.SHELL).build();
System.out.println("output (SHELL) = " + doc.toJson(shellMode));
JsonWriterSettings strictMode = JsonWriterSettings.builder().outputMode(JsonMode.STRICT).build();
System.out.println("output (STRICT) = " + doc.toJson(strictMode)); // deprecated - use extended like below
JsonWriterSettings extendedMode = JsonWriterSettings.builder().outputMode(JsonMode.EXTENDED).build();
System.out.println("output (EXTENDED) = " + doc.toJson(extendedMode));
JsonWriterSettings relaxed = JsonWriterSettings.builder().outputMode(JsonMode.RELAXED).build();
System.out.println("output (RELAXED) = " + doc.toJson(relaxed));

System.out.println("output (JSON) = " + com.mongodb.util.JSON.serialize(doc)); // deprecated - use relaxed like above    

También tenga en cuenta que el JsonWriterSettings constructor está en desuso y puede usar como alternativa el método de construcción como, por ejemplo:

JsonWriterSettings.builder().outputMode(JsonMode.SHELL).build()

Aquí tienes las reseñas y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *