java-从JSON字符串创建BSON对象

我有从外部应用程序获取数据的Java应用程序。 传入的JSON以字符串形式。 我想解析该Strings并创建BSON对象。

不幸的是,我在Java的BSON实现中找不到用于此的API。

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

9个解决方案

39 votes

官方的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/]

eskatos answered 2020-07-13T15:28:49Z

38 votes

...而且,从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(String)

Document.toJson()

yair answered 2020-07-13T15:29:23Z

12 votes

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

此答案显示了如何使用Jackson来将JSON字符串解析为Map。

Hank Gay answered 2020-07-13T15:28:24Z

10 votes

要将字符串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();

Leticia Santos answered 2020-07-13T15:29:48Z

5 votes

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

ultimatex answered 2020-07-13T15:30:08Z

3 votes

您可能对bson4jackson项目感兴趣,该项目使您可以使用Jackson数据绑定来与BSON一起使用(从BSON创建POJO,写为BSON)-尤其是因为Jackson也与JSON一起工作。 因此,它将允许您进行转换,只需要使用不同的ObjectMapper实例即可(一种适用于JSON,另一种适用于BSON)。

使用Jackson,您可以使用完整的POJO(所需的声明结构),也可以使用简单的Map,List等。 您只需要声明读取数据时绑定到的类型(写入时,类型由您传递的对象定义)。

StaxMan answered 2020-07-13T15:30:34Z

2 votes

您可以在[https://github.com/mongodb/mongo/blob/master/src/mongo/db/jsobj.cpp]的源代码中找到问题的答案。其中具有从BSON到JSON的转换。

基本上,像

/XXX/gi -> { "$regex" : "XXX", "$options" : "gi" }

/XXX/gi -> { "$regex" : "XXX", "$options" : "gi" }

等等...

Kresten Krab Thorup answered 2020-07-13T15:32:08Z

2 votes

我建议使用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();

user2023448 answered 2020-07-13T15:32:28Z

1 votes

我不确定Java,但是mongoDB CPP驱动程序具有函数类型

BSONObj fromjson(字符串)

它根据传递的字符串返回BSONObj。 Java也应该有相同的功能。

mayank_gupta answered 2020-07-13T15:32:57Z

java-从JSON字符串创建BSON对象我有从外部应用程序获取数据的Java应用程序。 传入的JSON以字符串形式。 我想解析该Strings并创建BSON对象。不幸的是,我在Java的BSON实现中找不到用于此的API。我是否像GSON这样使用了外部解析器?9个解决方案39 votes官方的MongoDB Java驱动程序附带了实用程序方法,用于将JSON解析为BSON并将BSON序列化为JS...
EJDB 是一个嵌入式的 JSON 数据库引擎,旨在提供快速的类 MongoDB 的嵌入式数据库,可用于 C/C 应用程序中。主要特性包括:集合级别写锁、集合级别的事务、 字符串 匹配查询以及 Node.js 绑定。 EJDB 修改自 Tokyo Cabinet. 基于 C BSON API 实现的 JSON 处理和查询。 标签:EJDB
cexpr_ bson 对 constexpr bson 创建 的尝试 这个基本库展示了一种使用 constexpr 函数在编译时 创建 二进制 blob 的技术。 它充分利用了 c++14 的扩展 constexpr 来管理这个,所以如果你有任何低于 clang 3.5 的东西,你可能想慢慢走开 ###不必要的困难 找出ieee754双精度浮点编码 寻找一个不需要goto的 json 解析器 记住如何在没有任何库代码的情况下编写 C++ 弄清楚如何在没有任何类型 转换 的情况下编写 C++ 记住如何用 <<、>>、|、& 和 = 替换 std::memcpy() 字符串 文字不能用作模板非类型参数 :( ###事情非常简单 为 constexpr 使用宏使得在运行时调试变得非常容易,然后在错误解决后切换回编译时。 这完全有效 ##库调用的样子 int main ()
String to Bson Document string json = "{ 'foo' : 'bar' }"; MongoDB. Bson . Bson Document document = MongoDB. Bson .Serialization. Bson Serializer.Deserialize&lt; Bson Document&gt;( json ); Bson Document to...
假设您使用的是 Java 语言中的MongoDB驱动程序(如Mongo Java Driver),您可以使用 Object Id类将日期 转换 为MongoDB的 Object Id。 以下是将给定日期 转换 Object Id的 Java 代码示例: import org. bson .types. Object Id; // 假设给定的 JSON 字符串 类型 String json String = "{\"date\":1673947550000,\"timestamp\":1673947550}"; // 将 JSON 字符串 解析为一个 JSON 对象 JSON Object json Object = new JSON Object ( json String); // 从 JSON 对象 中获取日期 long date = json Object .getLong("date"); // 将日期 转换 Object Id Object Id object Id = new Object Id(date); // 打印 Object Id System.out.println( object Id.toHexString()); 请注意,这里假设您已经包含了所需的库(例如:org. json . JSON Object ,org. bson .types. Object Id等),并且已经建立了MongoDB的连接。