2013-07-27 51 views
1

我是使用JSON的新手,我有一個問題想清楚如何從Google Places API響應中提取STATUS代碼。我想這個問題是因爲它是結果數組中的一個單獨的根元素。這是我爲我的解析器代碼:提取Google Places API響應的狀態代碼

public class PlaceJSONParser { 

/** Receives a JSONObject and returns a list */ 
public List<HashMap<String,String>> parse(JSONObject jObject){ 

    JSONArray jPlaces = null; 
    try { 
     /** Retrieves all the elements in the 'places' array */ 
     jPlaces = jObject.getJSONArray("results"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    /** Invoking getPlaces with the array of json object 
    * where each json object represent a place 
    */ 
    return getPlaces(jPlaces); 
} 

private List<HashMap<String, String>> getPlaces(JSONArray jPlaces){ 
    int placesCount = jPlaces.length(); 
    List<HashMap<String, String>> placesList = new ArrayList<HashMap<String,String>>(); 
    HashMap<String, String> place = null; 

    /** Taking each place, parses and adds to list object */ 
    for(int i=0; i<placesCount;i++){ 
     try { 
      /** Call getPlace with place JSON object to parse the place */ 
      place = getPlace((JSONObject)jPlaces.get(i)); 
      placesList.add(place); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    return placesList; 
} 

/** Parsing the Place JSON object */ 
private HashMap<String, String> getPlace(JSONObject jPlace){ 

    HashMap<String, String> place = new HashMap<String, String>(); 
    String placeName = "-NA-"; 
    String vicinity="-NA-"; 
    String latitude=""; 
    String longitude=""; 

    try { 
     // Extracting Place name, if available 
     if(!jPlace.isNull("name")){ 
      placeName = jPlace.getString("name"); 
     } 

     // Extracting Place Vicinity, if available 
     if(!jPlace.isNull("vicinity")){ 
      vicinity = jPlace.getString("vicinity"); 
     } 

     latitude = jPlace.getJSONObject("geometry").getJSONObject("location").getString("lat"); 
     longitude = jPlace.getJSONObject("geometry").getJSONObject("location").getString("lng"); 

     place.put("place_name", placeName); 
     place.put("vicinity", vicinity); 
     place.put("lat", latitude); 
     place.put("lng", longitude); 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return place; 
} 
} 

回答

1

是,狀態,結果和html_attributions在谷歌Places API的JSON響應中的3根元素。你可以從下面的響應中提取狀態數據:

String statuscheck = jObject.getString("status");