Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从YouTube API解析JSON_Java_Json_Youtube Api - Fatal编程技术网

Java 从YouTube API解析JSON

Java 从YouTube API解析JSON,java,json,youtube-api,Java,Json,Youtube Api,我有一个URL:它提供用户上传的最新youtube的JSON信息 我已经编写了一些代码来解析这个JSON数据,但我不理解JSON是如何工作的,以及如何在Java中解析它 public void getVideoData() throws ClientProtocolException, JSONException, IOException { JSONObject object = (JSONObject) new JSONTokener(getVideoJSON().toString

我有一个URL:它提供用户上传的最新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、标题和描述?

您最好使用官方客户端库:

中有一个用JAVA实现的解析器。

您就快到了。您需要的是:

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");
}
for(int i=0;i
我曾尝试使用客户端库,但在com.google.gdata.client.media.MediaServices中不断出现验证错误?不知道怎么了?你读过问题和代码了吗?OP已经在使用它了。他只是不知道如何使用JSON解析器准确地提取属性。另外,“Java”不是首字母缩略词,所以请不要大声喊出来:)谢谢你的回复,但我是否可以将此代码插入getVideoJSON方法中,使其无效并删除getVideoData方法?这取决于你想用它做什么。我不知道您打算如何处理这些数据,但这段代码应该让您大致了解如何从所有视频结果中获取每个视频标题和id(以及更多)。