因此我将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");
数据对象有“图片”
答案 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
}
确定此标记是否存在于数据
中