2013-08-23 46 views
19

Tôi có một chuỗi json như sau:Golang phân tích một json với NĂNG ĐỘNG chìa khóa

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

tôi muốn trích xuất các giá trị của nameage từ trên chuỗi json. Tôi đã xem ví dụ này tại địa chỉ golang http://play.golang.org/p/YQgzP7KPp9

Nhưng vấn đề của tôi là chìa khóa trong json ở cấp cao nhất là năng động. Điều đó có nghĩa là bvu62fu6dq là động. Tôi đã tạo ra cấu trúc như thế này:

type Info struct { 
    UniqueID map[string]string 
} 

Nhưng không chắc chắn làm thế nào để giải nén nameage. Mã của tôi là tại http://play.golang.org/p/Vbdkd3XIKc

+0

có thể trùng lặp của [Làm thế nào để phân tích cú pháp/deserlize một JSON động trong Golang] (https://stackoverflow.com/questions/29347092/how-to-parse-deserlize-a-dynamic-json-in-golang) – Flimzy

Trả lời

32

Tôi tin rằng bạn muốn một cái gì đó như thế này:

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

type Info map[string]Person 

Sau đó, sau khi giải mã công trình này:

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

Full dụ: http://play.golang.org/p/FyH-cDp3Na

+0

Như tôi đã nói, k của tôi ey là động và nó sẽ không luôn luôn 'bvu62fu6dq' do đó tôi không thể sử dụng' thông tin ["bvu62fu6dq"]. Tên ' – JVK

+3

Chắc chắn, và thông tin là một bản đồ bình thường. Bạn có thể lặp qua tất cả các phím hoặc truy cập bất kỳ khóa cụ thể nào, như thường lệ đối với bản đồ –

+0

OK. Cảm ơn. – JVK

Các vấn đề liên quan