Json 解组并附加到数组go
我正在从S3读取大量JSON文件,并希望将它们作为一个大型JSON数组返回。我有一个与JSON数据匹配的结构,还有一个遍历s3 bucket中所有对象的for循环。每次读取时,我都会解组到结构数组。我想附加到我的struct数组中,这样我就可以获得所有JSON数据,而不仅仅是一个文件的数据。在Golang中是否有这样做的方法?是的,您应该创建一个临时数组来解组每个JSON的内容,然后将这些项附加到最终结果数组中,以便将整个集合作为一个项返回 这里有一个这样做的例子 在您的情况下,Json 解组并附加到数组go,json,go,amazon-s3,Json,Go,Amazon S3,我正在从S3读取大量JSON文件,并希望将它们作为一个大型JSON数组返回。我有一个与JSON数据匹配的结构,还有一个遍历s3 bucket中所有对象的for循环。每次读取时,我都会解组到结构数组。我想附加到我的struct数组中,这样我就可以获得所有JSON数据,而不仅仅是一个文件的数据。在Golang中是否有这样做的方法?是的,您应该创建一个临时数组来解组每个JSON的内容,然后将这些项附加到最终结果数组中,以便将整个集合作为一个项返回 这里有一个这样做的例子 在您的情况下,输入将来自您提到
输入将来自您提到的每个S3文件。此外,您可能会将解组逻辑放在它自己的函数中,以便能够为每个输入调用它
package main
import (
"encoding/json"
"fmt"
"log"
)
type Record struct {
Author string `json:"author"`
Title string `json:"title"`
}
func main() {
var allRecords []Record
input := []byte(`[{
"author": "Nirvana",
"title": "Smells like teen spirit"
}, {
"author": "The Beatles",
"title": "Help"
}]`)
var tmpRecords []Record
err := json.Unmarshal(input, &tmpRecords)
if (err != nil) {
log.Fatal(err)
}
allRecords = append(allRecords, tmpRecords...)
fmt.Println("RECORDS:", allRecords)
}
你试过了吗?我需要制作一个临时切片来追加吗?B/cUnmarshal
不返回任何内容,因此无法附加该内容。您可以将文件解组到结构值中,然后将结构附加到切片,循环完成后返回切片。您可以显示一些代码吗?你为什么要直接解编成一个片段?文件内容是否为[{…}]
格式?或者还有其他原因吗?然后,要么将该片追加到最终数组中,从而生成二维数组[]T
,要么仅追加未分组片的第0个元素(如果您知道只有一个元素未分组),要么“解包”未分组片。。。像这样:请注意,在tmpRecords
上循环没有意义,因为这个slice=append(slice,anotherSlice…
也做同样的事情。