从 YouTube API 解析 JSON

Posted

技术标签:

【中文标题】从 YouTube API 解析 JSON【英文标题】:Parsing JSON from YouTube API 【发布时间】:2011-11-30 22:54:02 【问题描述】:

我有一个 URL:https://gdata.youtube.com/feeds/api/users/charlieissocoollike/uploads?alt=jsonc&v=2,它提供有关用户最新 youtube 上传的 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、标题和描述?

【问题讨论】:

【参考方案1】:

你最好使用官方客户端库:http://code.google.com/apis/youtube/2.0/developers_guide_java.html#Retrieving_user_activity_feeds

【讨论】:

我曾尝试使用客户端库,但在 com.google.gdata.client.media.MediaServices 中不断收到 VerifyError 错误?而且不知道出了什么问题?【参考方案2】:

在http://www.json.org/ 中有一个用 JAVA 实现的解析器。

【讨论】:

您阅读问题和代码了吗? OP 已经在使用它了。他只是不知道如何使用该 JSON 解析器准确提取属性。另外,“Java”不是首字母缩写词,所以请不要大喊大叫:)【参考方案3】:

你快到了。你需要的是:

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");

【讨论】:

感谢您的回复,但我是否可以将此代码插入到 getVideoJSON 方法中,使其无效并删除 getVideoData 方法? 这取决于你想用它做什么。我不知道您打算如何处理这些数据,但这段代码应该让您大致了解如何从所有视频结果中获取每个视频的标题和 ID(以及更多内容)。

以上是关于从 YouTube API 解析 JSON的主要内容,如果未能解决你的问题,请参考以下文章

解析 youtube 数据 v3 api

从 YouTube API 响应中选择特定键

使用 youtube api 显示subscriberCount - xmlns 解析

使用新的 YouTube API v3 解析 YouTube 订阅者数量

使用新的 YouTube API v3 解析 YouTube 订阅者数量

在 Java 中解析 Youtube API 日期 [重复]