将JSON顶级数组解组为字符串到字符串的映射

时间:2017-02-17 04:45:34

标签: arrays json go

我试图解组以下类型的JSON数组:

[
{"abc's": "n;05881364"},
{"abcoulomb": "n;13658345"},
{"abcs": "n;05881364"}
]

进入map[string]string。这个问题Golang parse JSON array into data structure几乎回答了我的问题,但我的是一张真正的地图,而不是一系列地图。解组为[]map[string]string,但我现在得到map[string]string的地图,而不是map的{​​{1}}地图,应该是

2 个答案:

答案 0 :(得分:3)

无法直接使用json包进行此操作;你必须自己做转换。这很简单:

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    data := []byte(`
        [
        {"abc's": "n;05881364"},
        {"abcoulomb": "n;13658345"},
        {"abcs": "n;05881364"}
        ]
    `)

    var mapSlice []map[string]string
    if err := json.Unmarshal(data, &mapSlice); err != nil {
        panic(err)
    }
    resultingMap := map[string]string{}
    for _, m := range mapSlice {
        for k, v := range m {
            resultingMap[k] = v
        }
    }
    fmt.Println(resultingMap)
}

输出

map[abc's:n;05881364 abcoulomb:n;13658345 abcs:n;05881364]

答案 1 :(得分:2)

Alex的答案的替代方法(尽管非常相似)是定义您自己的类型以及UnmarshalJSON函数。

$row = $dbStatement->fetch();

Playground