2

我正在尝试开发一个 Android 应用程序来检索特定用户的视频,我想使用 JSON-C 响应格式来保持较小的大小。一旦我得到我的回复,格式如下:

{
"apiVersion":"2.1",
"data":{
    "updated":"2012-12-02T14:40:07.424Z",
    "totalItems":175,
    "startIndex":1,
    "itemsPerPage":25,
    "items":[
        {
            "id":"rnzJ5x3sWyk",
            "uploaded":"2012-12-01T20:19:07.000Z",
            "updated":"2012-12-01T20:19:07.000Z",
            "uploader":"user",
            "category":"News",
            "title":"L'ALLUVIONE HA DISTRUTTO LE ROULOTTE DELLE VACANZE",
            "description":"Ad Albinia,in un rimessaggio per roulotte, il proprietario, i volontari e i vacanzieri che sono soliti passare l'estate qui, si sono rimboccati le maniche per ripulire dal fango le tante \"case delle vacanze\" distrutte dall'alluvione",
            "thumbnail":{
                "sqDefault":"http://i.ytimg.com/vi/rnzJ5x3sWyk/default.jpg",
                "hqDefault":"http://i.ytimg.com/vi/rnzJ5x3sWyk/hqdefault.jpg"
            },
            "player":{
                "default":"http://www.youtube.com/watch?v=rnzJ5x3sWyk&feature=youtube_gdata_player",
                "mobile":"http://m.youtube.com/details?v=rnzJ5x3sWyk"
            },
            "content":{
                "5":"http://www.youtube.com/v/rnzJ5x3sWyk?version=3&f=user_uploads&app=youtube_gdata",
                "1":"rtsp://v1.cache2.c.youtube.com/CigLENy73wIaHwkpW-wd58l8rhMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp",
                "6":"rtsp://v6.cache2.c.youtube.com/CigLENy73wIaHwkpW-wd58l8rhMYESARFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp"
            },
            "duration":136,
            "viewCount":2,
            "favoriteCount":0,
            "commentCount":0,
            "accessControl":{
                "comment":"allowed",
                "commentVote":"allowed",
                "videoRespond":"moderated",
                "rate":"allowed",
                "embed":"allowed",
                "list":"allowed",
                "autoPlay":"allowed",
                "syndicate":"allowed"
            }
        },
and others items....

当我设置我的模型类以反序列化它时它应该是什么样子我必须包含所有元素,即使是那些我不感兴趣的元素?

 public class SearchResponse {

    public Container data;

  }

指的是

import java.util.ArrayList;

import com.google.gson.annotations.SerializedName;

public class Container {

public ArrayList<Items> results;

@SerializedName("totalItems")
public int totalItems;

@SerializedName("startIndex")
public int startIndex;

@SerializedName("itemsPerPage")
      public int itemsPerPage;
}

对于每个项目:

import com.google.gson.annotations.SerializedName;

public class Items {

@SerializedName("id")
public String id;

@SerializedName("uploaded")
public String uploaded;

@SerializedName("category")
public String category;

@SerializedName("title")
public String title;

@SerializedName("description")
public String description;

public Thumbnail thumbnail;

@SerializedName("duration")
public int duration;


}

对于每个缩略图

import com.google.gson.annotations.SerializedName;

public class Thumbnail {

@SerializedName("sqdefault")
      public String sqdefault;

@SerializedName("hqdefault")
public String hqdefault;

}

我认为是“数据”部分正在杀死我。

如果您已经这样做了,有人可以帮忙或给我一些例子吗?

提前致谢

4

2 回答 2

2

这个:

public ArrayList<Items> results;

需要是:

public ArrayList<Items> items;

或者:

@SerializedName("items") public ArrayList<Items> results;

它应该可以正常工作。

不,您不必在 POJO 中包含所有字段。JSON 中存在的任何您没有的字段都将被静默忽略。

于 2012-12-22T16:25:54.363 回答
1

你不必使用 GSON,你可以自己做 - 保持简单并自己学习一些 JSON :-)

http://blog.blundell-apps.com/show-youtube-user-videos-in-a-listview/

https://github.com/blundell/YouTubeUserFeed

这是一个摘录:

 // Create a JSON object that we can use from the String
        JSONObject json = new JSONObject(youTubeJsonResult);

        // Get are search result items
        JSONArray jsonArray = json.getJSONObject("data").getJSONArray("items");

        // Create a list to store are videos in
        List<Video> videos = new ArrayList<Video>();
        // Loop round our JSON list of videos creating Video objects to use within our app
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            // The title of the video
            String title = jsonObject.getString("title");
            // The url link back to YouTube, this checks if it has a mobile url
            // if it doesnt it gets the standard url
            String url;
            try {
                url = jsonObject.getJSONObject("player").getString("mobile");
            } catch (JSONException ignore) {
                url = jsonObject.getJSONObject("player").getString("default");
            }
            // A url to the thumbnail image of the video
            // We will use this later to get an image using a Custom ImageView
            // Found here http://blog.blundell-apps.com/imageview-with-loading-spinner/
            String thumbUrl = jsonObject.getJSONObject("thumbnail").getString("sqDefault");

            // Create the video object and add it to our list
            videos.add(new Video(title, url, thumbUrl));
        }

视频只是:

public class Video {
    String title;
    String url;
    String thumbUrl
}
于 2012-12-09T20:52:43.423 回答