gpt4 book ai didi

json - 使用重复字段解码 JSON

转载 作者:行者123 更新时间:2023-12-01 22:37:23 25 4
gpt4 key购买 nike

我仍在学习 Go 语言,但我一直在努力寻找一些实用的东西来更好地处理它。目前,我正在尝试构建一个简单的程序,该程序可以访问 youtube channel 并通过获取公共(public) JSON 并将其解码来返回一些信息。

到目前为止,我已经尝试制作一个完全自定义的结构,其中只有几个字段,但这似乎并没有引入任何值。我也尝试过使用 https://mholt.github.io/json-to-go/ 等工具。并以这种方式获得“真实”结构。这种方法的问题是有很多重复,我不知道如何真正评估如何解决这个问题。

这是一个 JSON 示例(我为它的大小道歉)https://pastebin.com/6u0b39tU

这是我从上述工具中得到的结构:https://pastebin.com/3ZCu96st

我尝试过的基本代码模式是:

jsonFile, err := os.Open("test.json")
if err != nil {
fmt.Println("Couldn't open file", err)
}
defer jsonFile.Close()

bytes, _ := ioutil.ReadAll(jsonFile)

var channel Autogenerated

json.Unmarshal(bytes, &Autogenerated)
if err != nil {
fmt.Println("Failed to Unmarshal", err)
}

fmt.Println(channel.Fieldname)

有关如何处理此类事情的正确方法的任何反馈都会很棒。我觉得我完全失去了一些东西。

最佳答案

在您的代码中,您没有解码到 channel多变的。此外,您可以优化您的代码以不使用 ReadAll .另外,不要忘记检查错误(所有错误)。

这是对您的代码的改进。

jsonFile, err := os.Open("test.json")
if err != nil {
log.Fatalf("could not open file: %v", err)
}
defer jsonFile.Close()

var channel Autogenerated
if err := json.NewDecoder(jsonFile).Decode(&channel); err != nil {
log.Fatalf("failed to parse json: %v", err)
}

fmt.Println(channel.Fieldname)

注意对 channel 的引用传递给 Decode .

关于json - 使用重复字段解码 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58893042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com