将JSON解组为嵌套结构

brooding_goat:

我有不同的json字节输入,我需要将其解编为嵌套的json结构。我能够将json解组到struct App中。但是我无法添加到“状态”结构。

我试图解组,但是由于我的app1和app2是App类型而不是字节类型,因此无法正常工作。尝试直接设置会产生错误“无法将app1(App类型)用作分配中的[] App类型”

package main

import (
    "encoding/json"
    "fmt"
    "reflect"
)

type App struct {
    Appname string `json:"appname"`
    Builds  string `json:"builds"`
}

type Status struct {
    Apps []App `json:"apps"`
}

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

    jsonData2 := []byte(`
            {  
               "appname": "php2",
               "buildconfigs":"exists"
            }
        `)

    // unmarshal json data to App
    var app1 App
    json.Unmarshal(jsonData1, &app1)

    var app2 App
    json.Unmarshal(jsonData2, &app2)

    var status Status
    //json.Unmarshal(app1, &status)
    //json.Unmarshal(app2, &status)

    status.Apps = app1
    status.Apps = app2

    fmt.Println(reflect.TypeOf(app1))
    fmt.Println(reflect.TypeOf(app1))
}
CrazyCrow:

您无法将单个元素分配给数组字段,因此请转换

status.Apps = app1
status.Apps = app2

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

要么

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

也是您的JSON字段命名为,buildconfigs并位于struct规范中json:"builds"在这种情况下,结构的字段始终为空。

工作示例http://play.golang.org/p/fQ-XQsgK3j

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章