【问题标题】:Convert an org.bson.Document to an org.bson.BasicBSONObject in Java?在 Java 中将 org.bson.Document 转换为 org.bson.BasicBSONObject?
【发布时间】:2021-10-05 07:42:43
【问题描述】:

我在 Pentaho 数据集成 (PDI) 又名 Kettle 中有一个字符串,在转换的 UDJC 步骤中。 因此,使用 Java,我需要从 MongoDB 中获取包含 JSON 的字符串,并将其放入 BasicBSONObject 中。 (我可以使用 import 语句,但我不能将东西安装为解决方案的一部分。)

我将字符串放入 org.bson.Document 中,所以看起来困难的部分已经结束,但我仍然不知道如何在这里将一种类型的 bson 转换为另一种类型,从而产生一个 org 类型的对象。 bson.BasicBSONObject

这个错误在最后一行:

import org.bson.Document;
...
String mongoResultString = get(Fields.In, "mongoAsset").getString(r);
Document mongoResultDoc = Document.parse(mongoResultString );
BasicBSONObject mongoResult = (BasicBSONObject) mongoResultDoc;

试过 ecosia、google 和搜索 Stack Overflow。 谢谢。

【问题讨论】:

    标签: java bson pentaho-data-integration pdi


    【解决方案1】:

    MongoDB Java 驱动程序库中有一个BasicDBObject#parse 方法,它很可能出现在应用程序的类路径中。该方法根据documentation,将MongoDB Extended JSON格式的字符串解析为BasicDBObject。

    可以直接使用,跳过Document解析步骤。

    BasicBSONObject mongoResult = BasicDBObject.parse(mongoResultString);
    

    【讨论】:

      【解决方案2】:

      在多个在线资源建议使用 org.bson.Document 浪费了很多时间之后,然后他们忙于成为 BSON 布道者而无暇提及实际的解决方案部分...... facepalm ...我终于发现这实际上很简单。将字符串解析为 JSON 并立即转换为 BasicBSONObject:

      BasicBSONObject mongoResult = (BasicBSONObject) com.mongodb.util.JSON.parse(mongoResultString);
      

      这对我有用,因为我已经知道 mongoResultString 是有效的 JSON,因为它直接来自 Mongo,但可能会将其包装在 try 块中。

      不确定性能差异或陷阱,但现在我知道要寻找什么,我也看到了 Eugene 的解决方案可行的证据。 (也更短。接受它作为解决方案。)非常感谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-27
        • 2020-07-12
        • 2011-01-12
        • 2013-05-08
        相关资源
        最近更新 更多