gpt4 book ai didi

arrays - 从 GoLang 中单独的 []byte 结果创建 JSON 数组

转载 作者:IT王子 更新时间:2023-10-29 02:04:56 25 4
gpt4 key购买 nike

我有一个来自 tiedot 的结果循环查询。

最基本的形式是这样的:

col.ForEachDoc(func(id int, docContent []byte) (willMoveOn bool) {
return true
return false
})

我可以将这些结果通过管道发送给客户端,但一次只能发送 1 个。不完全是我想要的。

我还可以使用 json.Unmarshal 创建单个 JSON 对象,但如何将它们组合成 1 个大型 JSON 数组?

非常感谢。 GO 新手!

最佳答案

如果您将其直接返回给客户端并且您的 docContent 是 JSON,您可以手动构建数组语法。如果 docContent 不是有效的 json,它不会提供任何安全。

a := [][]byte{}

col.ForEachDoc(func(id int, docContent []byte) (willMoveOn bool) {
a = append(a, docContent)
return true
})
b := bytes.Join(a, []byte(`,`))

// insert '[' to the front
b = append(b, 0)
copy(b[1:], b[0:])
b[0] = byte('[')

// append ']'
b = append(b, ']')

您也可以解码,然后追加到一个 slice ,然后编码该 slice

s := []interface{}{}
col.ForEachDoc(func(id int, docContent []byte) (willMoveOn bool) {
var j interface{}
if err := json.Unmarshal(docContent, &j); err != nil {
// handle error
}
s = append(s, j)
return true
})

b, err := json.Marshal(j)

关于arrays - 从 GoLang 中单独的 []byte 结果创建 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33417637/

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