Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用重复字段解组JSON_Json_Go - Fatal编程技术网

使用重复字段解组JSON

使用重复字段解组JSON,json,go,Json,Go,我仍在学习围棋语言,但我一直在努力寻找一些实用的东西来更好地掌握它。目前,我正在尝试构建一个简单的程序,该程序将转到youtube频道,并通过获取公共JSON并对其进行解组来返回一些信息 到目前为止,我已经尝试创建一个完全自定义的结构,其中只有几个字段,但似乎没有引入任何值。我也尝试过使用一些工具,比如和以这种方式获取“真实”结构。这种方法的问题是有许多重复,我不知道如何真正评估如何解决这个问题 这是一个JSON示例(我为它的大小道歉) 这是我从上述工具获得的结构: 我尝试过的基本代码模式是:

我仍在学习围棋语言,但我一直在努力寻找一些实用的东西来更好地掌握它。目前,我正在尝试构建一个简单的程序,该程序将转到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的一些课程,所以我很抱歉!)感谢您的反馈。我主要是在学习各种网络指南的同时,也在学习围棋,所以我还没有完全掌握什么是“正确”的做事方式。我很感激指出优化!