2016-03-30 20 views
1

ben gibiGolang: iyi yolu tuşları olarak dize ile aşağıdaki json unmarshal

{ 
    "api_type" : "abc", 
    "api_name" : "xyz", 
    "cities" : { 
    "new_york" : { 
     "lat":"40.730610", 
     "long":"-73.935242" 
    }, 
    "london" : { 
     "lat":"51.508530", 
     "long":"-0.076132" 
    }, 
    "amsterdam" : { 
     "lat":"52.379189", 
     "long":"4.899431" 
    } 

    //cities can be multiple 
    } 
} 

Ben yapı aşağıdaki kullanabilirsiniz json

type MyJsonName struct { 
    APIName string `json:"api_name"` 
    APIType string `json:"api_type"` 
    Locations struct { 
     Amsterdam struct { 
      Lat string `json:"lat"` 
      Long string `json:"long"` 
     } `json:"amsterdam"` 
     London struct { 
      Lat string `json:"lat"` 
      Long string `json:"long"` 
     } `json:"london"` 
     NewYork struct { 
      Lat string `json:"lat"` 
      Long string `json:"long"` 
     } `json:"new_york"` 
    } `json:"locations"` 
} 

unmarshal ama benim şehir adları ve numaraları farklı olacaktır sahip Her cevap, anahtarların dizginin değişebileceği bu tür jsonu unmarshal en iyi yoldur. (Eğer JSON cities denir olmasına rağmen)

cevap

7

Ben locations bir harita yapmak olacaktır: o mükemmel çalıştı

type MyJsonName struct { 
     APIName string `json:"api_name"` 
     APIType string `json:"api_type"` 
     Locations map[string]struct { 
       Lat string 
       Long string 
     } `json:"locations"` 
} 
+0

Müthiş, teşekkür ederiz! +1 –

İlgili konular