将@SerializedName与Retrofit调用一起使用时缺少对象

时间:2018-03-17 21:39:56

标签: android api serialization retrofit2

我正在开发一个连接到Springboot服务器的Android应用程序。

应用程序(使用okhttp3和retrofit)调用服务器,该服务器返回下面对象中的数组列表(Photo Response)。

列表正在填充,但对象MediaContentGroup不会填充任何照片对象,即使id和title的字段也是如此。

我已经通过我的服务器进行了调试,以确保在使用@SerializedName时使用正确的对象名称。

我对Android开发和使用springboot很新,所以如果有人能帮我理解为什么MediaContentGroup对象总是为null,我真的很感激。

我是否有任何可能的方式将其设置为仅接受字符串??

由于

public class PhotoResponse {

    @SerializedName("photoFeed")
    @Expose
    private PhotoFeed photoFeed;

    public PhotoFeed getPhotoFeed() {
        return photoFeed;
    }
}

public class PhotoFeed {

    @SerializedName("photoList")
    @Expose
    private List<Photo> photoList = new ArrayList<>();

    public List<Photo> getPhotoList() {
        return photoList;
    }
}

public class Photo {
    public final static int HD_720_WIDTH = 1280;
    public final static int HD_720_HEIGHT = 720;

    @SerializedName("id")
    @Expose
    private String id;

    @SerializedName("title")
    @Expose
    private String title;

    @SerializedName("mediaContentGroup")
    @Expose
    private MediaContentGroup mediaContentGroup;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setMediaContentGroup(MediaContentGroup mediaContentGroup){
        this.mediaContentGroup = mediaContentGroup;
    }

    public MediaContentGroup getMediaContentGroup(){
        return this.mediaContentGroup;
    }

    public String getImageUrl() {
        return mediaContentGroup.getImages().get(0).getUrl();
    }

    public String getThumbUrl() {
        return mediaContentGroup.getThumbnails().get(0).getUrl();
    }
}

public class MediaContentGroup {

    @SerializedName("images")
    @Expose
    public List<MediaContent> images = new ArrayList<>();

    public void setImages(List<MediaContent> images){ this.images = images;}

    public List<MediaContent> getImages() {
        return images;
    }

    @SerializedName("thumbnails")
    @Expose
    public List<Thumbnail> thumbnails = new ArrayList<>();

    public void setThumbnails(List<Thumbnail> thumbnails){ this.thumbnails = thumbnails;}

    public List<Thumbnail> getThumbnails() {
        return thumbnails;
    }
}

public class Thumbnail {

    @SerializedName("url")
    @Expose
    private String url;

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUrl() {
        return url;
    }
}

0 个答案:

没有答案