2013-08-23 6 views
19

साथ एक json पार्स मैं एक json स्ट्रिंग के रूप में निम्नानुसार है:Golang DYNAMIC कुंजी

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

मैं json स्ट्रिंग ऊपर से name और age का मान प्राप्त करना चाहते हैं। मैंने गोलांग साइट http://play.golang.org/p/YQgzP7KPp9

पर दिए गए इस उदाहरण को देखा लेकिन मेरी समस्या शीर्ष स्तर पर जेसन में कुंजी गतिशील है। इसका मतलब है bvu62fu6dq गतिशील है। मैं इस तरह struct बनाया है:

type Info struct { 
    UniqueID map[string]string 
} 

लेकिन यकीन है कि name और age निकालने के लिए कैसे नहीं। मेरे कोड http://play.golang.org/p/Vbdkd3XIKc

+0

की संभावित डुप्लिकेट [कैसे गोलांग में गतिशील JSON को पार्स/deserlize करने के लिए] (https://stackoverflow.com/questions/29347092/how-to-parse-deserlize-a- गतिशील- 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

जैसा कि मैंने कहा, मेरे के आई गतिशील है और यह हमेशा 'bvu62fu6dq' नहीं होगा इसलिए मैं 'info [" bvu62fu6dq "] का उपयोग नहीं कर सकता। नाम' – JVK

+3

निश्चित रूप से, और जानकारी एक सामान्य मानचित्र है। आप –

+0

मानचित्रों के लिए सामान्य रूप से सभी चाबियों पर फिर से चल सकते हैं या किसी भी विशिष्ट कुंजी तक पहुंच सकते हैं। धन्यवाद। – JVK