Arrays 从GoLang中单独的[]字节结果创建JSON数组
我有一个来自查询的结果循环 最基本的形式是这样的:Arrays 从GoLang中单独的[]字节结果创建JSON数组,arrays,json,go,tiedot,Arrays,Json,Go,Tiedot,我有一个来自查询的结果循环 最基本的形式是这样的: col.ForEachDoc(func(id int, docContent []byte) (willMoveOn bool) { return true return false }) 我可以通过管道将这些结果发送到客户端,但一次只能发送一个。不完全是我想要的 我还可以使用JSON.Unmarshal创建单个JSON对象,但如何将它们组合成一个大型JSON数组 非常感谢。新的开始 如果您直接将其返回给客户端,并且您的doc
col.ForEachDoc(func(id int, docContent []byte) (willMoveOn bool) {
return true
return false
})
我可以通过管道将这些结果发送到客户端,但一次只能发送一个。不完全是我想要的
我还可以使用JSON.Unmarshal创建单个JSON对象,但如何将它们组合成一个大型JSON数组
非常感谢。新的开始 如果您直接将其返回给客户端,并且您的
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, ']')
您还可以解组,然后附加到切片,然后封送该切片
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)
对于JSON数组,您的意思有点不清楚。您是指可以索引的数组,其中每个元素都是一个字典,还是指文本json表示?