在Go中,我如何解析以下JSON?
我知道使用struct
进行解析,但每个条目的键不同,也不是固定的,它们可以更多或更少。
{
"consul": [],
"docker": [],
"etcd": ["etcd"],
"kubernetes": ["secure"],
"mantl-api": [],
"marathon": ["marathon"],
"mesos": ["agent", "follower", "leader", "master"],
"mesos-consul": [],
"zookeeper": ["mantl"]
}
感谢您的帮助!
答案 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
}
答案 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"`
}