Json 解组并附加到数组go

Json 解组并附加到数组go,json,go,amazon-s3,Json,Go,Amazon S3,我正在从S3读取大量JSON文件,并希望将它们作为一个大型JSON数组返回。我有一个与JSON数据匹配的结构,还有一个遍历s3 bucket中所有对象的for循环。每次读取时,我都会解组到结构数组。我想附加到我的struct数组中,这样我就可以获得所有JSON数据,而不仅仅是一个文件的数据。在Golang中是否有这样做的方法?是的,您应该创建一个临时数组来解组每个JSON的内容,然后将这些项附加到最终结果数组中,以便将整个集合作为一个项返回 这里有一个这样做的例子 在您的情况下,输入将来自您提到

我正在从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/c
Unmarshal
不返回任何内容,因此无法附加该内容。您可以将文件解组到结构值中,然后将结构附加到切片,循环完成后返回切片。您可以显示一些代码吗?你为什么要直接解编成一个片段?文件内容是否为
[{…}]
格式?或者还有其他原因吗?然后,要么将该片追加到最终数组中,从而生成二维数组
[]T
,要么仅追加未分组片的第0个元素(如果您知道只有一个元素未分组),要么“解包”未分组片。。。像这样:请注意,在
tmpRecords
上循环没有意义,因为这个
slice=append(slice,anotherSlice…
也做同样的事情。