2016-07-13 54 views
4

在Go中,如何解析以下JSON? 我知道使用struct解析,但每個條目的鍵是不同的,他們也不是固定的,他們可以更多或更少。如何在Go中解析以下JSON結構

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

感謝您的幫助!

+0

裏面有什麼領事,碼頭工人和maltl-API? – Bestbug

回答

6

如果JSON值始終是一個[]string你可以用

json.Unmarshal(value, &map[string][]string) 

轉換但如果不是,最好的方法要做到這一點是地圖[字符串]接口{}中的Unmarshal JSON,並檢查您想要的每個字段類型。

2

解組的JSON的地圖類型:map[string][]string

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

playground example

0

您也可以提供圍棋結構更加流暢拆封......

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