2013-08-23 9 views
19

analysieren ich eine JSON-String haben wie folgt:Golang eine json mit DYNAMIC Schlüssel

j := `{"bvu62fu6dq": { 
      "name": "john", 
      "age": 23, 
      "xyz": "weu33s" 
      ..... 
      .....} 
     }` 

ich den Wert von name und age von oben JSON-String extrahieren möchten. Ich schaute auf dieses Beispiel Golal Website gegeben http://play.golang.org/p/YQgzP7KPp9

Aber mein Problem ist der Schlüssel in der JSON auf der obersten Ebene ist dynamisch. Das bedeutet bvu62fu6dq ist dynamisch. Ich habe struct wie folgt erstellt:

type Info struct { 
    UniqueID map[string]string 
} 

aber nicht sicher, wie name und age zu extrahieren. Mein Code ist bei http://play.golang.org/p/Vbdkd3XIKc

+0

Mögliche Duplikat [How um einen dynamischen JSON in Golang zu parsen/deserlize] (https://stackoverflow.com/questions/29347092/how-to-parse- deserlize-a-dynamic-json-in-golang) – Flimzy

Antwort

32

Ich glaube, Sie so etwas wie dies wollen:

type Person struct { 
    Name string `json:"name"` 
    Age int `json:"age"` 
} 

type Info map[string]Person 

Dann, nach Decodierung dies funktioniert:

fmt.Printf("%s: %d\n", info["bvu62fu6dq"].Name, info["bvu62fu6dq"].Age) 

Voll Beispiel: http://play.golang.org/p/FyH-cDp3Na

+0

Wie gesagt, mein k ey ist dynamisch und es wird nicht immer 'bvu62fu6dq' sein, deshalb kann ich' info ["bvu62fu6dq"] nicht verwenden. Name' – JVK

+3

Sicher, und info ist eine normale Karte. Sie können über alle Schlüssel iterieren oder auf einen bestimmten Schlüssel zugreifen, wie für Karten üblich –

+0

. Vielen Dank. – JVK