我正在从S3读取大量JSON文件,并希望将它们全部作为一个大型JSON数组返回。我有一个匹配我的JSON数据的结构,以及一个for循环遍历我的s3存储桶中的所有对象。每次我读,我解组我的struct数组。我想附加到我的struct数组,以便我可以获取所有JSON数据而不仅仅是一个文件的数据。无论如何在Golang中有这个吗?
答案 0 :(得分:1)
是的,您应该创建一个临时数组来解组每个JSON的内容,然后将这些项追加到最终结果数组中,以便将整个集合作为一个项返回。
请参阅此处的示例。
在您的情况下,input
将来自您提及的每个S3文件。此外,您可能会将该unmarshal逻辑放在其自己的函数中,以便能够为每个输入JSON调用它。
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)
}