如何使用golang打印json文档中"org"下current字段中存储的所有元素?

How to print all the elements stored in the field current under "org" in json document in using golang?

更新后的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":""]

如何打印字段 "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[]}]

phoneorg 的内容是完全不同的数据结构,您无法像示例中那样将两者完全反序列化为同质格式。最好的选择是至少部分反序列化为 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".

之前缺少逗号,它无效