有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我无法通过Kitsu Api获得动画列表

我得到这个错误:com。谷歌。格森。JsonSyntaxException:java。lang.IllegalStateException:应为BEGIN_对象,但在第1行第10列路径$处为BEGIN_数组。数据

https://kitsu.io/api/edge/anime

RetroService RetroService=RetroInstance。GetReformation()。创建(RetroService.class)

public void makeApiCall() {
    Call<Animes> call = retroService.getAnimes();
    call.enqueue(new Callback<Animes>() {
        @Override
        public void onResponse(Call<Animes> call, Response<Animes> response) {
            Log.d("Result", response.body().getData().getAttributes().getCanonicalTitle());

        }

        @Override
        public void onFailure(Call<Animes> call, Throwable t) {

        }
    });
}

@GET(“动画”)

```Call<Animes> getAnimes(); ```

我的POJO课程:

    @Expose
    private Data data;

    /**
     * No args constructor for use in serialization
     *
     */
    public Animes() {
    }

    /**
     *
     * @param data
     */
    public Animes(Data data) {
        super();
        this.data = data;
    }

    public Data getData() {
        return data;
    }

    public void setData(Data data) {
        this.data = data;
    }



public class Data {

    @SerializedName("id")
    @Expose
    private String id;
    @SerializedName("type")
    @Expose
    private String type;
    @SerializedName("attributes")
    @Expose
    private Attributes attributes;


    //With  getter and setters and constructor

public class Attributes {
    @SerializedName("synopsis")
    @Expose
    private String synopsis;
    @SerializedName("canonicalTitle")
    @Expose
    private String canonicalTitle;
    @SerializedName("startDate")
    @Expose
    private String startDate;
    @SerializedName("endDate")
    @Expose
    private String endDate;
    @SerializedName("ratingRank")
    @Expose
    private Integer ratingRank;
    @SerializedName("status")
    @Expose
    private String status;
    @SerializedName("episodeCount")
    @Expose
    private Integer episodeCount;
    @SerializedName("youtubeVideoId")
    @Expose
    private String youtubeVideoId;
//With  getter and setters and constructor

共 (1) 个答案

  1. # 1 楼答案

    基本上Expected BEGIN_OBJECT but was BEGIN_ARRAY意味着您试图解析单个对象(Animes),虽然JSON中没有单个对象,但它是一个数组(根)

    我不知道你的RetroInstanceRetroService是如何工作的,但是:

    Call<Animes> call = ...
    

    应该是

    Call<ArrayList<Data>> call = ...