如何在Go中解析以下JSON结构

时间:2016-07-13 00:48:47

标签: json parsing go

在Go中,我如何解析以下JSON? 我知道使用struct进行解析,但每个条目的键不同,也不是固定的,它们可以更多或更少。

{
  "consul": [],
  "docker": [],
  "etcd": ["etcd"],
  "kubernetes": ["secure"],
  "mantl-api": [],
  "marathon": ["marathon"],
  "mesos": ["agent", "follower", "leader", "master"],
  "mesos-consul": [],
  "zookeeper": ["mantl"]
}

感谢您的帮助!

3 个答案:

答案 0 :(得分:7)

如果json值始终为[]string,则可以使用

进行转换
json.Unmarshal(value, &map[string][]string)

但如果没有,最好的方法是在map [string] interface {}中使用Unmarshal JSON并检查你想要的每个字段类型。

答案 1 :(得分:2)

将JSON解组为地图类型:map[string][]string

var m map[string][]string
if err := json.Unmarshal(data, &m); err != nil {
    // handle error
}

playground example

答案 2 :(得分:0)

你也可以提供Go'结构更流畅的解组...

type Rec struct {
    Consul      []string // `json:"consul"`
    Docker      []string // `json:"docker"`
    Etcd        []string // `json:"etcd"`
    Kubernetes  []string // `json:"kubernetes"`
    MantlApi    []string // `json:"mantl-api"`
    Marathon    []string // `json:"marathon"`
    Mesos       []string // `json:"mesos"`
    MesosConsul []string // `json:"mesos-consul"`
    Zookeeper   []string // `json:"zookeeper"`
}

Working example on playground