解组并附加到数组去

时间:2017-07-07 23:23:30

标签: json go amazon-s3

我正在从S3读取大量JSON文件,并希望将它们全部作为一个大型JSON数组返回。我有一个匹配我的JSON数据的结构,以及一个for循环遍历我的s3存储桶中的所有对象。每次我读,我解组我的struct数组。我想附加到我的struct数组,以便我可以获取所有JSON数据而不仅仅是一个文件的数据。无论如何在Golang中有这个吗?

1 个答案:

答案 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)
}

https://play.golang.org/p/ZZGhy4UNhP