如何将Java/Scala中的BsonArray转换为JSON字符串?
解决BsonArray转格式化JSON字符串的问题
可以利用MongoDB驱动中的JsonWriter类实现BsonArray的JSON转换,不管是紧凑格式还是带缩进的格式化输出都支持,具体实现如下:
1. 导入必要类
确保项目已引入MongoDB Java驱动依赖,导入以下类:
import org.bson.BsonArray import org.bson.BsonDocument import org.bson.BsonInt32 import org.bson.BsonString import org.bson.json.JsonWriter import org.bson.json.JsonWriterSettings import java.io.StringWriter
2. 具体转换实现
情况1:生成紧凑格式JSON(如"[1,2]")
val array = new BsonArray() array.add(new BsonInt32(1)) array.add(new BsonInt32(2)) // 紧凑格式配置 val compactSettings = JsonWriterSettings.builder().build() val writer = new StringWriter() new JsonWriter(writer, compactSettings).writeArray(array) val compactJson = writer.toString() // 最终结果:"[1,2]"
情况2:生成带缩进的格式化输出(支持嵌套文档)
如果数组包含嵌套文档,使用带缩进的配置可生成易读的结构化JSON:
val nestedArray = new BsonArray() nestedArray.add(new BsonInt32(1)) // 添加嵌套文档示例 val nestedDoc = new BsonDocument() nestedDoc.put("name", new BsonString("demo")) nestedDoc.put("count", new BsonInt32(5)) nestedArray.add(nestedDoc) nestedArray.add(new BsonInt32(2)) // 带缩进的格式化配置 val prettySettings = JsonWriterSettings.builder().indent(true).build() val prettyWriter = new StringWriter() new JsonWriter(prettyWriter, prettySettings).writeArray(nestedArray) val prettyJson = prettyWriter.toString()
生成的格式化JSON示例:
[ 1, { "name": "demo", "count": 5 }, 2 ]
原理说明
BsonArray本身没有内置toJson方法,但JsonWriter是MongoDB驱动提供的通用JSON序列化工具,支持所有Bson类型的转换,通过JsonWriterSettings可以灵活控制输出的格式(紧凑/缩进)。
内容的提问来源于stack exchange,提问作者Marc Grue
相关产品推荐
相关产品推荐

