原创

如何在 Java bson 库中将单个 BsonValue(例如“BsonArray”)转换为 json 使用 MongoDB 驱动程序 Java API 将 BSON 转换为 JSON Java BsonArray 到 json 字符串

温馨提示:
本文最后更新于 2024年04月12日,已超过 48 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

I am developing a function to import ChangStream into aws redshift. I need to convert the value of the composite field type (such as: BsonArray, BsonDocument) in mongodb into a JSON string.

The Java bson library can only convert BsonDocument to JSON string (using toJson method), but other composite field types such as BsonArray are not supported

For example, the following code

BsonArray bsonArray = new BsonArray();
bsonArray.add(new BsonString("apple"));
bsonArray.add(new BsonString("banana"));
bsonArray.add(new BsonString("orange"));

I want it to output as:

["apple","banana","orange"]

I tried:

BsonArray bsonArray = new BsonArray();
bsonArray.add(new BsonString("apple"));
bsonArray.add(new BsonString("banana"));
bsonArray.add(new BsonString("orange"));

StringWriter stringWriter = new StringWriter();

JsonWriter jsonWriter = new JsonWriter(stringWriter);

jsonWriter.writeStartArray();
for (int i = 0; i < bsonArray.size(); i++) {
    jsonWriter.writeString(bsonArray.get(i).toString());
}
jsonWriter.writeEndArray();
jsonWriter.flush();

String jsonString = stringWriter.toString();

System.out.println("JSON: " + jsonString);

But: Exception in thread "main" org.bson.BsonInvalidOperationException: A StartArray value cannot be written to the root level of a BSON document.

正文到此结束
热门推荐
本文目录