从JSON字符串创建BSON对象

Mac*_*cki 44 java json mongodb bson

我有Java应用程序从外部应用程序获取数据.传入的JSON位于字符串中.我想解析字符串并创建BSON对象.

不幸的是,我无法在Java的BSON实现中找到API.

我是否像GSON一样使用外部解析器?

esk*_*tos 40

官方MongoDB Java驱动程序附带了实用程序方法,用于将JSON解析为BSON并将BSON序列化为JSON.

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

DBObject dbObj = ... ;
String json = JSON.serialize( dbObj );
DBObject bson = ( DBObject ) JSON.parse( json );
Run Code Online (Sandbox Code Playgroud)

驱动程序可以在这里找到:https: //mongodb.github.io/mongo-java-driver/

  • 我确信这对Sunny来说太晚了,但对于其他任何绊倒这个的人来说,C#中的等价物只是`BsonDocument.Parse` (3认同)

yai*_*air 38

...而且,从3.0.0开始,您可以:

import org.bson.Document;

final Document doc = new Document("myKey", "myValue");
final String jsonString = doc.toJson();
final Document doc = Document.parse(jsonString);
Run Code Online (Sandbox Code Playgroud)

官方文档:


Han*_*Gay 12

最简单的方法似乎是使用JSON库将JSON字符串解析为a Map,然后使用该putAll方法将这些值放入a中BSONObject.

这个答案显示了如何使用Jackson将JSON字符串解析为Map.


Let*_*tos 10

要将字符串json转换为bson,请执行以下操作:

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);
Run Code Online (Sandbox Code Playgroud)

要将bson转换为json,请执行以下操作:

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

BasicBSONDecoder decoder = new BasicBSONDecoder();
BSONObject bsonObject = decoder.readObject(out);
String json_string = bsonObject.toString();
Run Code Online (Sandbox Code Playgroud)


ult*_*tex 5

Document.parse(String json)从中使用org.bson.Document。它返回Document类型为的对象Bson