2013-08-23 64 views
19

我有一個JSON字符串如下:Golang分析JSON與動態密鑰

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

我想從上面的JSON字符串的提取和nameage價值。我看了golang站點給出的這個例子http://play.golang.org/p/YQgzP7KPp9

但是我的問題是關於json頂層的關鍵是動態的。這意味着bvu62fu6dq是動態的。我創建結構是這樣的:

type Info struct { 
    UniqueID map[string]string 
} 

,但不知道如何提取nameage。我的代碼是在http://play.golang.org/p/Vbdkd3XIKc

+0

可能的複製[如何在Golang中解析/確定動態JSON](https://stackoverflow.com/questions/29347092/how-to-parse-deserlize-a-dynamic-json-in-golang) – Flimzy

回答

32

我相信你想是這樣的:

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

type Info map[string]Person 

然後,解碼後,這個工程:

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

全比如:http://play.golang.org/p/FyH-cDp3Na

+0

正如我所說,我的k ey是動態的,它不會總是'bvu62fu6dq'因此我不能使用'info [「bvu62fu6dq」]。Name' – JVK

+3

當然,信息是一個普通的地圖。您可以遍歷所有密鑰或訪問任何特定的密鑰,像往常一樣地圖 –

+0

明白了。謝謝。 – JVK