gpt4 book ai didi

sql - 如何使用 Groovy StreamingJsonBuilder 将 SQL 结果流式传输到 JSON?

转载 作者:行者123 更新时间:2023-12-01 00:56:47 25 4
gpt4 key购买 nike

我正在尝试执行 SQL 查询并将结果转换为 JSON,如下所示。虽然我在没有流媒体的情况下也能正常工作,但我在使用 StreamingJsonBuilder 时遇到了一些问题。以流式传输结果。

非流式代码

def writer = new StringWriter()
def jsonBuilder = new StreamingJsonBuilder(writer)
sql.eachRow("select * from client"){ row ->
jsonBuilder( id: row.id, name: row.name )
}
println writer.toString()

上面代码的结果
{"id":123,"name":"ABCD"}{"id":124,"name":"NYU"}

此结果的问题在于,所有文档都打印在同一行上而没有定界。我如何将结果作为数组和每个文档漂亮地打印如下

预期结果
[
{
id: 123,
name: "ABCD",
...
},
{
id: 124,
name: "NYU",
...
},
]

最佳答案

我把它放在这里更多是作为后备。如果您的问题只是将数据正确格式化为 json,但大量数据让您使用流式 API,那么最好将流式传输用于数据并自行处理“数组”。

StreamingJsonBuilder 中的所有调用都采用一个对象并将其直接写入编写器。所以没有安全的方法(我可以看到)让作者打开数组,然后以您提供的块发送数据,然后关闭数组。因此,虽然我们已经掌握了作者,但为什么不直接处理自己的数组(json 的这一部分很容易搞定):

new File('/tmp/out.json').withWriter{ writer ->
writer << '['
def jsonBuilder = new groovy.json.StreamingJsonBuilder(writer)
def first = true
10000000.times{
if (!first) writer << "\n,"
first = false
jsonBuilder(id: it, name: it.toString())
}
writer << ']'
}

关于sql - 如何使用 Groovy StreamingJsonBuilder 将 SQL 结果流式传输到 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27208525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com