转换org.bson.Document到org.bson.BasicBSONObject在Java?



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

我把字符串变成了一个org.bson.Document,所以看起来困难的部分结束了,但我仍然无法弄清楚如何将一种类型的bson转换为另一种类型的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。谢谢。

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

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

BasicBSONObject mongoResult = BasicDBObject.parse(mongoResultString);

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

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

这对我来说很有效,因为我已经知道mongoResultString是有效的JSON,因为它直接来自Mongo,但否则可能会把它包装在一个try块中。

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

相关内容

最新更新