2016-07-13 7 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の値は、あなたが

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

しかし、そうでない場合に、それを変換することができ、常に最良の方法[]stringある場合これを行うには、マップ[文字列]インターフェース{}の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

関連する問題