Android解析Google Places API JSON

Android解析Google Places API JSON,android,json,google-places-api,Android,Json,Google Places Api,我试图从GooglePlaces返回的JSON中获取信息 jsonObj = new JSONObject(data); JSONArray results = jsonObj.getJSONArray("results"); for (int i = 0; i < results.length(); i++) { JSONObject result = results.getJSONObject(i); System.out.println(result.getSt

我试图从GooglePlaces返回的JSON中获取信息

jsonObj = new JSONObject(data);
JSONArray results = jsonObj.getJSONArray("results");

for (int i = 0; i < results.length(); i++) {  
    JSONObject result = results.getJSONObject(i);
    System.out.println(result.getString("name"));

    if (result.getJSONArray("reviews") != null){
         JSONArray reviewsArray = result.getJSONArray("reviews");
         JSONObject reviews = reviewsArray.getJSONObject(0);
         if (reviews != null){
              String review = reviews.getString("text");  
              Log.d("tag", "review: " + review);
         }  
    }

}
jsonObj=新的JSONObject(数据);
JSONArray results=jsonObj.getJSONArray(“结果”);
对于(inti=0;i

我的问题是,如何确保“name”或“reviews”可用于解析?如果(result.getJSONArray(“reviews”)!=null)
仍然失败,因为getJSONArray是空的。

您可以使用opt命令而不是get命令来实现这一点。将get json数组更改为以下内容:

(result.optJSONArray("reviews") != null)

请查看完整的列表。您还可以使用JSONObject命令在实际获取它之前检查它是否存在。

由于您的json最初是以a的形式出现的,您可以使用它的
isNull(字符串名称)
helper方法检查映射是否存在且不为null

从文件中:

如果此对象没有的映射,则isNull(字符串名称)返回true 名称,或者它是否具有值为NULL的映射

例如:

try {

jsonObj = new JSONObject(data);
if(!jsonObj.isNull("results")){
  JSONArray results = jsonObj.getJSONArray("results");

  for (int i = 0; i < results.length(); i++) {  
      JSONObject result = results.getJSONObject(i);
      if(!result.isNull("name"){
          System.out.println(result.getString("name"));
      }

      if (result.getJSONArray("reviews") != null){
           JSONArray reviewsArray = result.getJSONArray("reviews");
           JSONObject reviews = reviewsArray.getJSONObject(0);
           if (reviews != null){
                String review = reviews.getString("text");  
                Log.d("tag", "review: " + review);
           }  
        }
     }
  }
} catch(JSONException e){
     //Something went wrong
}
试试看{
jsonObj=新的JSONObject(数据);
如果(!jsonObj.isNull(“结果”)){
JSONArray results=jsonObj.getJSONArray(“结果”);
对于(inti=0;i
嘿,伙计,我仍然没有收到任何评论。当我检查返回的JSON时,我甚至没有看到“评论”数组。但我检查了谷歌地图的同一个地方,我可以看到有一些评论。你知道为什么不包括这些吗?@MoMoney你可能应该创建一个新问题,并发布你正在使用返回的json进行的api调用。你可以在这里链接到新问题。给你。任何帮助都将不胜感激。