使用重复字段解组JSON
我仍在学习围棋语言,但我一直在努力寻找一些实用的东西来更好地掌握它。目前,我正在尝试构建一个简单的程序,该程序将转到youtube频道,并通过获取公共JSON并对其进行解组来返回一些信息 到目前为止,我已经尝试创建一个完全自定义的结构,其中只有几个字段,但似乎没有引入任何值。我也尝试过使用一些工具,比如和以这种方式获取“真实”结构。这种方法的问题是有许多重复,我不知道如何真正评估如何解决这个问题 这是一个JSON示例(我为它的大小道歉) 这是我从上述工具获得的结构: 我尝试过的基本代码模式是:使用重复字段解组JSON,json,go,Json,Go,我仍在学习围棋语言,但我一直在努力寻找一些实用的东西来更好地掌握它。目前,我正在尝试构建一个简单的程序,该程序将转到youtube频道,并通过获取公共JSON并对其进行解组来返回一些信息 到目前为止,我已经尝试创建一个完全自定义的结构,其中只有几个字段,但似乎没有引入任何值。我也尝试过使用一些工具,比如和以这种方式获取“真实”结构。这种方法的问题是有许多重复,我不知道如何真正评估如何解决这个问题 这是一个JSON示例(我为它的大小道歉) 这是我从上述工具获得的结构: 我尝试过的基本代码模式是:
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)
任何关于如何处理这种事情的正确方法的反馈都是非常好的。我觉得我完全错过了一些东西。在代码中,您没有解组到
通道
变量中。此外,您可以优化代码,使其不使用ReadAll
。另外,不要忘记检查错误(所有错误)
下面是对代码的改进
jsonFile,err:=os.Open(“test.json”)
如果出错!=零{
log.Fatalf(“无法打开文件:%v”,错误)
}
延迟jsonFile.Close()
var通道自动生成
如果err:=json.NewDecoder(jsonFile.Decode)(&channel);呃!=零{
log.Fatalf(“未能解析json:%v”,错误)
}
fmt.Println(频道字段名)
请注意,
频道
的引用是如何传递到解码的
请给出完整的示例。具体来说,我需要查看结构的定义。同样,json规范中没有重复的字段。如果你把pastebin文件放在这里,它会吐出我一直在使用的结构。我已经尝试了这两种工具提供的样式,恐怕两者都没有成功。(我试图将其放入问题中,但字符长度太长!)此处未读取json.Unmarshal(bytes,&[structname])错误(添加错误变量以标识您面临的错误err=json.Unmarshal(bytes,&[structname])。。还有一个建议,尝试对json进行解组以映射[string]接口{}并对其进行解析individually@SivaGuru我不太清楚你的意思,你能给我举个例子看看吗?(我完全是个新手,目前正在学习go的一些课程,所以我很抱歉!)感谢您的反馈。我主要是在学习各种网络指南的同时,也在学习围棋,所以我还没有完全掌握什么是“正确”的做事方式。我很感激指出优化!