Google商家信息详情“照片[]”jsonarray始终为空

时间:2017-09-18 07:11:14

标签: java android json

因此我将place_id存储在Hashmap中,并将该地点的“名称”作为关键字。

private HashMap<String, String> placeTitleId = new HashMap<>();

if (!place.isNull("place_id")) {
    placeId = place.getString("place_id");
    placeTitleId.put(name, placeId);
}

稍后,我创建了Places Detail搜索网址:

private String createPlaceDetailsUrl(String placeId) {
            StringBuilder stringBuilder = new StringBuilder("https://maps.googleapis.com/maps/api/place/details/json?");
            stringBuilder.append("placeid=").append(placeId);
            stringBuilder.append("&key=").append(GOOGLE_PLACES_API_KEY);
            return stringBuilder.toString();
}

最后,我解析了json的回复:

JSONObject data = new JSONObject(result);
if (data.getString("status").equalsIgnoreCase("OK")) {
    JSONArray photoArray = data.getJSONArray("photos");
}

我不明白为什么“照片”json数组没有价值 Android Monitor:W / System.err:org.json.JSONException:没有照片值

文档说照片[] jsonarray应该有多达10张照片。但是,json输出模式不包含photos []对象,我觉得很奇怪。我是如何获取place_id或解析响应的?

修改

“结果”字符串非常长,但我可以提供一个要点:

result {
"address components" : [
      *bunch of stuff*
]
...
"geometry" : {
      *bunch of stuff*
}
"icon"
"id"
"photos" : [
 {
      "height"
      "html_attributions:
      "photo_reference!!
 }
 {
     ...
     "photo_reference!!
 }
 *bunch more of these*
]
}

编辑: 修复得到json对象“结果

JSONObject jsonObject = new JSONObject(result);
JSONObject data = new JSONObject("result");

数据对象有“图片”

1 个答案:

答案 0 :(得分:0)

试试这个。

 JSONObject data = new JSONObject(result);
 // add log here ,make sure you have photos in your result
 Log.e("result", result + "");
 if (data.getString("status").equalsIgnoreCase("OK")) {
     // edited here
     JSONArray photoArray = data.optJSONArray("photos");
 }

修改

if (data .has("photos")) {
     Log.e("photos", "photos exists");
 } else  {
     Log.e("photos", "photos not exists");
}

在代码中使用data .has("photos")并进行判断。

注意

使用

JSONObject data  = new JSONObject(result);
    if(data.has("TAG")){
    // if has it in your data,do something
}

确定此标记是否存在于数据