我有Java应用程序从外部应用程序获取数据.传入的JSON位于字符串中.我想解析字符串并创建BSON对象.
不幸的是,我无法在Java的BSON实现中找到API.
我是否像GSON一样使用外部解析器?
官方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 );
驱动程序可以在这里找到:https: //mongodb.github.io/mongo-java-driver/
...而且,从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);
官方文档:
Document.parse(字符串)
Document.toJson()
最简单的方法似乎是使用JSON库将JSON字符串解析为a Map
,然后使用该putAll
方法将这些值放入a中BSONObject
.
这个答案显示了如何使用Jackson将JSON字符串解析为Map
.
要将字符串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);
要将bson转换为json,请执行以下操作:
import org.bson.BasicBSONDecoder; import org.bson.BSONObject; BasicBSONDecoder decoder = new BasicBSONDecoder(); BSONObject bsonObject = decoder.readObject(out); String json_string = bsonObject.toString();
Document.parse(String json)
从中使用org.bson.Document
。它返回Document
类型为的对象Bson
。