You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 01:51:01