解析来自 Google 地图的 JSON 响应

我需要创建一个代理服务器来连接到谷歌地图网络服务,我发现一个教程可以完成我大约 95% 的需要。该教程使用golang,我对golang几乎完全陌生,如果我完全按照它操作,它就可以正常工作。但是当我尝试更改教程中的某些内容时,我显然把一些事情搞砸了,哈哈。


我现在需要的问题是,本教程仅解析 google-maps 响应中的 2 个变量,即纬度和经度。对于我的应用程序的其余部分,我还需要地点 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 结构字段 .Id 类型为 struct { Id string "json:\"id\"" }


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


繁花如伊
浏览 167回答 1
1回答

慕丝7291255

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 Playground 的示例:https ://play.golang.org/p/Q4rM-jluoFe
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go