为了账号安全,请及时绑定邮箱和手机立即绑定

如何读取多个json文件

如何读取多个json文件

Go
喵喔喔 2023-07-10 17:36:16
我正在尝试从多个 json 文件读取 json 数据。我不确定如何读取每个文件并连接所有结果json 文件名是 test1.json、test2.json test3.json..etc 具有相同的数据结构,但我在读取所有内容时遇到问题,并且我的代码似乎只显示最后一个。我已经根据文件名连接了一个字符串,但似乎不适合我。type Book struct {    Id    string `json: "id"`    Title string `json: "title"`}func main() {    fileIndex := 2 // three json files. All named test1.json, test2.json and test3.json    var master []Book    for i := 0; i <= fileIndex; i++ {        fileName := fmt.Sprintf("%s%d%s", "test", fileIndex, ".json")        // Open jsonFile        jsonFile, err := os.Open(fileName)        defer jsonFile.Close()        byteValue, _ := ioutil.ReadAll(jsonFile)        fmt.Println(byteValue)        var book []Book        json.Unmarshal(byteValue, &book)        fmt.Println(book) // all print shows the test3.json result     }}我需要能够读取所有三个 json 文件并希望连接所有结果。谁能帮我?谢谢你!
查看完整描述

1 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您在生成文件名时使用fileIndex,而不是i在 for 循环中使用。更改后的代码将是:


type Book struct {

    Id    string `json: "id"`

    Title string `json: "title"`

}


func main() {

    fileIndex := 2 // three json files. All named test1.json, test2.json and test3.json


    var master []Book


    for i := 0; i <= fileIndex; i++ {

        fileName := fmt.Sprintf("%s%d%s", "test", i, ".json")


        // Open jsonFile

        jsonFile, err := os.Open(fileName)


        defer jsonFile.Close()


        byteValue, _ := ioutil.ReadAll(jsonFile)

        fmt.Println(byteValue)

        var book []Book


        json.Unmarshal(byteValue, &book)

        fmt.Println(book)

    }

}

另外,您可以在 for 循环中执行类似的操作master = append(master, book),以最终获取所有 JSON 内容master


查看完整回答
反对 回复 2023-07-10
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信