2011-10-04 148 views
2

我有一個網址:https://gdata.youtube.com/feeds/api/users/charlieissocoollike/uploads?alt=jsonc&v=2,它提供有關用戶上傳的最新YouTube信息的JSON信息。從YouTube API解析JSON

我寫了一些代碼來解析這個JSON數據,但我不明白JSON是如何工作的以及如何在Java中解析它。

public void getVideoData() throws ClientProtocolException, JSONException, IOException { 

    JSONObject object = (JSONObject) new JSONTokener(getVideoJSON().toString()).nextValue(); 
    //String query = object.getString("data"); 
    JSONArray locations = object.getJSONArray("data"); 
    output.setText(locations.getString(1)); 

} 

public JSONObject getVideoJSON() throws ClientProtocolException, IOException, JSONException { 
    final String URL = "https://gdata.youtube.com/feeds/api/users/charlieissocoollike/uploads?alt=jsonc&v=2"; 

    StringBuilder url = new StringBuilder(URL); 
    HttpGet get = new HttpGet(url.toString());  
    HttpResponse r = client.execute(get);  
    int status = r.getStatusLine().getStatusCode(); 
     HttpEntity e = r.getEntity();   
     String data = EntityUtils.toString(e);   
     JSONArray VideoData = new JSONArray(data);  
     JSONObject video = VideoData.getJSONObject(0); 

     return video;   
} 

我該如何從每個視頻對象的JSON數據中提取視頻ID,標題和描述?

回答

2

你快到了。你需要的是:

JSONObject json = new JSONObject(data); 
JSONObject dataObject = json.getJSONObject("data"); // this is the "data": { } part 
JSONArray items = dataObject.getJSONArray("items"); // this is the "items: [ ] part 

然後你可以遍歷在每個視頻:

for (int i = 0; i < items.length(); i++) { 
    JSONObject videoObject = items.getJSONObject(i); 
    String title = videoObject.getString("title"); 
    String videoId = videoObject.getString("id"); 
} 
+0

謝謝你的回覆,但我會將這段代碼插入到getVideoJSON方法中,使其無效並移除getVideoData方法? –

+0

這取決於你想要用它做什麼。我不知道你想用數據做什麼,但是這段代碼應該給你一個關於如何從所有視頻結果中獲得每個視頻標題和id(以及更多)的總體思路。 – smoak

4

http://www.json.org/在Java中實現一個解析器。

+2

您是否閱讀過這個問題和代碼? OP已經在使用它。他只是不知道如何使用該JSON解析器來提取屬性。另外,「Java」不是一個縮寫,所以請不要吼出:) – BalusC