解析来自谷歌地图的JSON响应

解析来自谷歌地图的JSON响应,json,google-maps,go,Json,Google Maps,Go,我需要创建一个代理服务器来连接GoogleMapsWebservices,我发现一个教程可以完成我需要的95%。本教程使用了golang,我对golang几乎完全陌生,如果我完全遵循它,它会很好地工作。但是当我试图从教程中改变一些东西的时候,我显然把一些东西搞砸了,哈哈 我现在需要解决的问题是,本教程只解析谷歌地图响应中的两个变量:纬度和经度。对于我的应用程序的其余部分,我还需要位置Id 我收到了谷歌地图的回复,没有问题。如果我将其解析为 type placeResults struct {

我需要创建一个代理服务器来连接GoogleMapsWebservices,我发现一个教程可以完成我需要的95%。本教程使用了golang,我对golang几乎完全陌生,如果我完全遵循它,它会很好地工作。但是当我试图从教程中改变一些东西的时候,我显然把一些东西搞砸了,哈哈

我现在需要解决的问题是,本教程只解析谷歌地图响应中的两个变量:纬度和经度。对于我的应用程序的其余部分,我还需要位置Id

我收到了谷歌地图的回复,没有问题。如果我将其解析为

type placeResults struct {
    Results []struct {
        Geometry struct {
            Location struct {
                Lat float64 `json:"lat"`
                Lng float64 `json:"lng"`
            } `json:"location"`
        } `json:"geometry"`
    } `json:"results"`
}
它工作得很好,给了我纬度和经度,不用担心

但是如果我试着

type placeResults struct {
    Results []struct {
        Geometry struct {
            Location struct {
                Lat float64 `json:"lat"`
                Lng float64 `json:"lng"`
            } `json:"location"`
        } `json:"geometry"`
        id struct {
            Id string `json:"id"`
        }
    } `json:"results"`
}
它告诉我:

json:无法将字符串解组到Go struct字段中。类型为struct{Id string json:\Id\}


现在id变量不是几何体的一部分,而是响应的通用部分,所以我认为这是正确的语法。显然我错了。但是包含这一点的正确语法是什么呢?

Google place API响应看起来像

      "geometry" : {
         "location" : {
            "lat" : -33.866651,
            "lng" : 151.195827
         },
         "viewport" : {
            "northeast" : {
               "lat" : -33.8653881697085,
               "lng" : 151.1969739802915
            },
            "southwest" : {
               "lat" : -33.86808613029149,
               "lng" : 151.1942760197085
            }
         }
      },
      "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
      "id" : "4f89212bf76dde31f092cfc14d7506555d85b5c7",
所以您需要将id字段声明为字符串,而不是结构。您需要更改placeResult结构

type modifiedPlaceResult struct {
    Geometry struct {
        Location struct {
            Lat float64 `json:"lat"`
            Lng float64 `json:"lng"`
        } `json:"location"`
    } `json:"geometry"`

    Id string `json:"id"`
}
尝试使用modifiedPlaceResult结构来解组数据,一切都会正常。 我附上了Go游乐场的示例: