Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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_Struct - Fatal编程技术网

将json解组到嵌套结构

将json解组到嵌套结构,json,go,struct,Json,Go,Struct,我需要将不同的json字节输入解组到嵌套json结构中。我能够将json解组到struct应用程序中。但是,我无法添加到“status”结构 我试图解组,但这不起作用,因为我的app1和app2的类型是App而不是bytes。如果试图直接设置,则会出现错误“无法将app1(类型App)用作分配中的[]类型App” 不能将单个元素指定给数组字段,因此请转换 status.Apps = app1 status.Apps = app2 差不多 status.Apps = []App{app1, ap

我需要将不同的json字节输入解组到嵌套json结构中。我能够将json解组到struct应用程序中。但是,我无法添加到“status”结构

我试图解组,但这不起作用,因为我的app1和app2的类型是App而不是bytes。如果试图直接设置,则会出现错误“无法将app1(类型App)用作分配中的[]类型App”


不能将单个元素指定给数组字段,因此请转换

status.Apps = app1
status.Apps = app2
差不多

status.Apps = []App{app1, app2}

还有名为
buildconfigs
的JSON字段和结构规范
JSON中的:“builds”
。在这种情况下,结构的字段始终为空


工作示例

您的问题让我有点困惑:但是如果您将JSON数据修改为JSON数组,它将与
解组
一起工作,并且可以无问题地解组状态:

func main() {
    jsonData1 := []byte(`
            {  
               "apps": [{
                   "appname": "php1",
                   "buildconfigs":"deleted"
                },{  
                   "appname": "php2",
                   "buildconfigs":"exists"
                }]
            }
        `)

    var status Status
    json.Unmarshal(jsonData1, &status)
    fmt.Printf("%+v\n", status)
}

这里的工作示例:

谢谢。我认为status.Apps=append(status.Apps,app1)适用于我的用例,因为我可以在循环中调用它。但我正在从另一个软件包获取应用程序信息。我需要为多个调用构建状态结构。
status.Apps = []App{}
status.Apps = append(status.Apps, app1)
status.Apps = append(status.Apps, app2)
func main() {
    jsonData1 := []byte(`
            {  
               "apps": [{
                   "appname": "php1",
                   "buildconfigs":"deleted"
                },{  
                   "appname": "php2",
                   "buildconfigs":"exists"
                }]
            }
        `)

    var status Status
    json.Unmarshal(jsonData1, &status)
    fmt.Printf("%+v\n", status)
}