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

标签 json dictionary go glide-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":""]

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

现在我这样做:

    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
}

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

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)

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

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

关于json - 使用golang如何打印json文档中 "org"下current字段中存储的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48406615/

相关文章:

json - 在 Express 中读取嵌套的 json 正文参数

go - 导入本地源文件以兼容 Travis CI

html - 如何使用字符串标记器替换特定的html标签

java - 使用java中的公钥实现进行RSA解密

json - 如何为角度示意图输入数组类型值

javascript - theyworkforyou API 在 Javascript Ajax 中返回为空

javascript - 树递归: How to get the parent root of the selected tree node

python - 如果键不存在,从字典或默认值获取值的最短方法

java - 如何通过 Java 中的 REST api 在 JIRA 中创建问题?

javascript - 如何对我的 json 数据文件使用量化功能