Golang:使用字符串作为键解组json后的最佳方法

Pan*_*nar 1 json go unmarshalling

我有json喜欢

{
  "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
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用以下结构来解组

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"`
}
Run Code Online (Sandbox Code Playgroud)

但是我的城市名称和数字在每个响应中会有所不同,这是什么是解密这种类型的json的最佳方式,其中键可以是不同的字符串.

Joh*_*don 7

我会制作locations一张地图(尽管你cities在JSON中调用它):

type MyJsonName struct {
        APIName   string `json:"api_name"`
        APIType   string `json:"api_type"`
        Locations map[string]struct {
                Lat  string
                Long string
        } `json:"locations"`
}
Run Code Online (Sandbox Code Playgroud)