【问题标题】:Android Parse Google Places API JSONAndroid 解析 Google Places API JSON
【发布时间】:2014-02-19 01:54:30
【问题描述】:

我正在尝试从 Google Places 返回的 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);
         }  
    }

}

我的问题是,如何确保可以解析“名称”或“评论”? if (result.getJSONArray("reviews") != null) 仍然失败,因为 getJSONArray 为空。

【问题讨论】:

    标签: android json google-places-api


    【解决方案1】:

    您可以使用 opt 命令而不是 get 命令来执行此操作。将get json数组改成如下:

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

    查看JSONObject documentation 以获取完整列表。也可以在实际获取之前使用 JSONObject has(String name) 命令检查是否存在。

    【讨论】:

    • 嘿伙计,所以我仍然没有得到任何评论。当我检查返回的 JSON 时,我什至没有看到“reviews”数组。但是我查看了同一个地方的谷歌地图,我可以看到有一些评论。知道为什么它不包括那个吗?
    • @Money 您可能应该创建一个新问题并发布您正在使用返回的 json 进行的 api 调用。您可以在此处链接到新问题。
    • 给你。任何帮助都感激不尽。 link
    【解决方案2】:

    由于您的 json 最初采用 JSONObject 的形式,您可以使用它的 isNull(String name) 辅助方法来检查映射是否存在且不为空。

    来自文档:

    isNull(String name) 如果此对象没有映射,则返回 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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      相关资源
      最近更新 更多