来自Google Places API的响应不一致(JSON数组长度不同)

时间:2014-01-28 00:13:23

标签: json httpresponse google-places-api

当我对Google Places API进行GET HTTP调用时。 (示例呼叫:“https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=”)....

在“结果”下,返回不一致的元素数。什么是将始终返回的字段的基本列表?

在下面的屏幕截图中,您可以看到“结果”下的数组长度计数是如何不同的,计数是11,10,10和8.

enter image description here

下面的屏幕截图显示了响应中的JSON数组如何具有比另一个更多的元素,并且额外的字段以红色圈出。

Different number of JSON elements in array

我在这里很困惑因为我正在尝试编写代码来解析JSON并试图了解哪些字段是期望的?响应中某些数组中缺少字段会破坏我的代码。

我是否错误地解释了API文档,或者这是我应该直接向Google提交的错误吗?

2 个答案:

答案 0 :(得分:0)

您可以考虑使用根本不需要任何字段的逻辑。由于服务器无法控制,因此可以随时返回任何内容(由于API更改,错误,技术故障等)。

例如,在Sprockets中,我遍历返回的任何对象,如果名称与我期望的内容相匹配,那么我会处理它。否则,我的对象中的字段将保持为空。您可以在PlacesResponse构造函数中看到顶级处理Java代码。

答案 1 :(得分:0)

这不是一个错误,而是记录在案的行为。 Google Places API documentation说:

  

结果数组中的每个结果可能包含以下字段:

换句话说,Google会在 的地方返回评分,营业时间等,但是如果它还有,那么它会将它们排除在外或者该字段与该地点无关(例如,你不会有公寓大楼的开放时间或火车站的价格。正如@pushbit所说,你必须相应地解析并检查每个字段是否都被返回。