/ / Creando un objeto BSON desde una cadena JSON - java, json, mongodb, bson

Creando un objeto BSON desde una cadena JSON - java, json, mongodb, bson

Tengo una aplicación Java que toma datos de una aplicación externa. Los JSON entrantes están en cadenas. Me gustaría analizar esas cadenas y crear objetos BSON.

Desafortunadamente no puedo encontrar la API para eso en la implementación BSON de Java.

¿Tengo uso de analizador externo para eso como GSON?

Respuestas

11 para la respuesta № 1

La forma más fácil parece ser usar una biblioteca JSON para analizar las cadenas JSON en un Map y luego usar el putAll método para poner esos valores en una BSONObject.

Esta respuesta muestra cómo usar Jackson para analizar una cadena JSON en una Map.


37 para la respuesta № 2

El controlador Java oficial de MongoDB viene con métodos de utilidad para analizar JSON a BSON y serializar BSON a JSON.

import com.mongodb.DBObject;
import com.mongodb.util.JSON;

DBObject dbObj = ... ;
String json = JSON.serialize( dbObj );
DBObject bson = ( DBObject ) JSON.parse( json );

El controlador se puede encontrar aquí: https://mongodb.github.io/mongo-java-driver/


31 para la respuesta № 3

... Y, desde 3.0.0, puedes:

import org.bson.Document;

final Document doc = new Document("myKey", "myValue");
final String jsonString = doc.toJson();
final Document doc = Document.parse(jsonString);

Documentos oficiales:


8 para la respuesta № 4

Para convertir una cadena json a bson, haz:

import org.bson.BasicBSONEncoder;
import org.bson.BSONObject;

BSONObject bson = (BSONObject)com.mongodb.util.JSON.parse(string_json);
BasicBSONEncoder encoder = new BasicBSONEncoder();
byte[] bson_byte = encoder.encode(bson);

Para convertir un bson a json, haz:

import org.bson.BasicBSONDecoder;
import org.bson.BSONObject;

BasicBSONDecoder decoder = new BasicBSONDecoder();
BSONObject bsonObject = decoder.readObject(out);
String json_string = bsonObject.toString();

3 para la respuesta № 5

Te podría interesar bson4jackson proyecto, que le permite utilizar los datos de JacksonEnlace para trabajar con BSON (crear POJOs desde BSON, escribir como BSON), especialmente porque Jackson también trabaja con JSON. Así que permitirá la conversión como usted menciona, solo use diferentes instanstaces ObjectMapper (una que funciona con JSON, otra con BSON).

Con Jackson puedes trabajar con POJOs completos(declare la estructura que desee) o con mapas simples, listas, etc. Solo tiene que declarar qué escribir para enlazar al leer datos (al escribir, el tipo se define por el objeto que pasa).


2 para la respuesta № 6

Encontrará la respuesta a su pregunta en el código fuente de https://github.com/mongodb/mongo/blob/master/src/mongo/db/jsobj.cpp Que tiene la conversión de BSON a JSON.

Básicamente, cosas como

  • ObjectId("XXX") -> { "$oid" : "XXX" }
  • /XXX/gi -> { "$regex" : "XXX", "$options" : "gi" }

y así...


1 para la respuesta № 7

No estoy seguro de java pero el controlador CPP mongoDB tiene un tipo de función

BSONObj fromjson (cadena)

que devuelve un BSONObj de acuerdo con la cadena pasada. Debería haber una misma función en Java también.


1 para la respuesta № 8

Yo sugeriría usar los métodos toJson () y parse (String) del objeto BasicDBO, porque la clase de utilidad JSON ha sido @Depricated.

import com.mongodb.BasicDBObject;

public static BasicDBObject makeBsonObject(String json) {
return BasicDBObject.parse(json);
}

public static String makeJsonObject(BasicDBObject dbObj) {
return dbObj.toJson();
}

0 para la respuesta № 9

Utilizar Document.parse(String json) de org.bson.Document. Vuelve Document objeto que es tipo de Bson.