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