我有一个Java应用程序,它从外部应用程序获取数据。传入的JSON数据是以字符串形式呈现的。我想解析这些字符串并创建BSON对象。
不幸的是,我在Java的BSON实现中找不到相应的API。
我是否需要使用像GSON这样的外部解析器?
我有一个Java应用程序,它从外部应用程序获取数据。传入的JSON数据是以字符串形式呈现的。我想解析这些字符串并创建BSON对象。
不幸的是,我在Java的BSON实现中找不到相应的API。
我是否需要使用像GSON这样的外部解析器?
... 而且自从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);
官方文档:
官方的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/
BsonDocument.Parse
。请注意,这只是翻译,不包括任何解释或其他信息。 - rrrr-o使用 org.bson.Document
中的 Document.parse(String json)
方法。它将返回一个属于 Bson
类型的 Document
对象。
将一个字符串形式的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();
使用Jackson,您可以使用完整的POJO(声明所需的结构)或简单的Map、List等进行操作。您只需要在读取数据时声明要绑定到的类型(在写入时,类型由传递的对象定义)。
我建议使用BasicDBObject的toJson()和parse(String)方法,因为JSON实用程序类已被@Depricated。
import com.mongodb.BasicDBObject;
public static BasicDBObject makeBsonObject(String json) {
return BasicDBObject.parse(json);
}
public static String makeJsonObject(BasicDBObject dbObj) {
return dbObj.toJson();
}
ObjectId("XXX")
-> { "$oid" : "XXX" }
- /XXX/gi
-> { "$regex" : "XXX", "$options" : "gi" }
等等...我不确定Java是否有相应的函数,但MongoDB CPP驱动程序具有函数类型:
BSONObj fromjson(string)
该函数根据传递的字符串返回BSONObj。Java中应该也有相同的函数。