0

更新后的json如下:

    {
     "phone":[
                {"home":"58878767"},
                {"mobile":"32453543"}
              ],
     "org": [
    {
        "current": {
            "org_dept": "Hr",
            "org_eptime": "1516354574432",
            "org_name": "Uejsjak",
            "org_title": "Hakosklaks"
        }
    },
    {
        "current": {
            "org_dept": "Accounts",
            "org_eptime": "1516354561184",
            "org_name": "Abcd",
            "org_title": "Hakahkshsjs"
        },
    {
        "past": {
            "org_dept": "Backend",
            "org_eptime": "15163545",
            "org_name": "Ab",
            "org_title": "Hakah"
        }
    }
    ]
    }

我正在使用以下代码在键和值上打印:

    personMap := make(map[string][]map[string]string)

    json.Unmarshal([]byte(ii), &personMap)


    for key, value := range personMap {
    fmt.Println("index : ", key, " value : ", value){

     }

我得到的输出是:

    index: org value: [map["current":""],map["current":""]

我如何打印字段“当前”下的每个字段值??????

现在我正在这样做:

    personMap := make(map[string][]struct{Current map[string]string})
    json.Unmarshal([]byte(ii), &personMap)
    for key, value := range personMap {
    fmt.Println("index : ", key, " value : ", value)

    }

我得到的输出是:

    index :  org  value :  [{map[org_dept:Hr org_eptime:1516354574432 org_name:Uejsjak org_title:Hakosklaks]} {map[org_dept:Accounts org_eptime:1516354561184 org_name:Abcd org_title:Hakahkshsjs]}]
    index :  phone  value :  [{map[]} {map[]}]
4

1 回答 1

1

phone和的内容org是完全不同的数据结构,您将无法像示例中那样将两者完全反序列化为同质格式。最好的选择是至少部分反序列化为struct

type data struct {
    Phone []map[string]string
    Org []map[string]map[string]string
}

这至少会反序列化所有数据,但还是有点乱;一张地图的地图不是一个很好的数据结构。从问题中不清楚,但如果任何字段是固定的,您可能还想将这些字段编码为类型,例如:

type data struct {
    Phone []map[string]string
    Org []struct{
        Current map[string]string
    }
}

然后您可以反序列化为这种类型并更轻松地使用它:

var person data
json.Unmarshal([]byte(ii), &person)
fmt.Printf("%v", person.Phone)
fmt.Printf("%v", person.Org[0].Current)

在这里工作的游乐场示例:https: //play.golang.org/p/5W-7RzPimZj

请注意,我必须更正 JSON 中的错误,由于之前缺少逗号,因此无效"org"

于 2018-01-23T19:43:58.873 回答