2016-02-27 19 views
0

我正在使用Facebook的Graph API,我試圖讓表面層的JSON對象更深。我怎樣才能正確地做到這一點?Android從Facebook獲取深層JSON對象GraphRequest

JSON對象看起來是這樣的:

{ 
    "id": "#############", 
    "name": "Page Name", 
    "picture": { 
     "data": { 
      "is_silhouette": false, 
      "url": "https://scontent.xx.fbcdn.net/hprofile-xap1/v/t1.0-1/p50x50/76818_139533536097297_144033_n.jpg?oh=9caa264df8b15feb6ecdjeajks9d43ee05bc22&oe=5750EE78" 
     } 
    } 
} 

(網址是不是在這個例子中一個真正的URL)

我已經試過這樣:

new GraphRequest.GraphJSONObjectCallback() { 
    @Override 
     public void onCompleted(JSONObject object, GraphResponse response) { 
      facebook_name.setText("Logged in as " + object.optString("name")); 
      try { 
       JSONArray pictureArray = object.getJSONArray("picture"); 
       for (int i = 0; i < pictureArray.length(); i++) { 
        JSONObject picture = pictureArray.getJSONObject(i); 
        JSONArray pictureDataArray = picture.getJSONArray("data"); 
        for (int j = 0; j < pictureDataArray.length(); j++) { 
         JSONObject pictureData = pictureDataArray.getJSONObject(j); 
         String pictureDataURL = pictureData.optString("url"); 
         Log.d("*******************", pictureDataURL); 
        } 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 

但我米沒有得到我的Log.d回來。我是否錯誤地遍歷了這個?有沒有更簡單的方法來做到這一點?

回答

0

我找到了答案。我只需要保持對穿線對.getJSONObject()保持下去較低找到我要找:

String pictureURL = object.getJSONObject("picture").getJSONObject("data").getString("url"); 
+0

這是更好地使用GSON或改造轉換JSON響應轉換成Java類。 – yueyueqi

+0

@yueyueqi,請你解釋一下爲什麼會更好?這是我找到的最簡單的方法。但我想知道爲什麼會更好。謝謝 – ntgCleaner

+0

因爲它會爲你做JSON解析,比如處理那些JSONArray/JSONObjects。你需要做的是定義Java類並關注邏輯。 – yueyueqi