为了账号安全,请及时绑定邮箱和手机立即绑定

java.lang.IllegalStateException:预期为 BEGIN_ARRAY

java.lang.IllegalStateException:预期为 BEGIN_ARRAY

慕少森 2023-09-27 21:24:14
拜托,我有问题。我想获取 web api( news.api)上的所有实体但我在响应时遇到执行错误retrofit:错误:java.lang.IllegalStateException:预期为 BEGIN_ARRAY,但在第 1 行第 57 列为 BEGIN_OBJECT感谢您的帮助public interface ApiService {    @GET("top-headlines")    Call<ResponseNewsApi> getResponseNewsApi(@Query("sources") String source, @Query("apiKey") String apiKey);}public class ResponseNewsApi {    @SerializedName("status")    private String status;    @SerializedName("totalResults")    private String totalResults;    @SerializedName("articles")    private List<Post> articles;}public class Post {    @SerializedName("source")    private List<String> source;    @SerializedName("author")    private String author;    @SerializedName("title")    private String title;    @SerializedName("description")    private String description;    @SerializedName("url")    private String url;    @SerializedName("urlToImage")    private String urlToImage;    @SerializedName("publishedAt")    private String publishedAt;    @SerializedName("content")    private String content;}service.getResponseNewsApi(source,apiKey).enqueue(new Callback<ResponseNewsApi>() {            @Override            public void onResponse(Call<ResponseNewsApi> call, Response<ResponseNewsApi> response) {                Log.d(TAG, "onResponse response:: " + response);                if (response.body() != null) {                    data.setValue(response.body());                    Log.d(TAG, "posts total result:: " + response.body().getTotalResults());                    Log.d(TAG, "posts size:: " + response.body().getArticles().size());                    Log.d(TAG, "posts title pos 0:: " + response.body().getArticles().get(0).getTitle());                }            }            @Override            public void onFailure(Call<ResponseNewsApi> call, Throwable t) {                data.setValue(null);                Log.e(TAG,"Error get enqueue Retrofit");                Log.e(TAG,"Error: "+t.getMessage());            }        });        return data;
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

List<String> source您得到此异常是因为您在类中使用 Post意味着您想要source作为 anarray但在您的JSON响应中它是一个Object。所以你必须将其更改为object.


为源对象创建一个类,如下所示。


 public class Source {

    private String id;

    private String name;

 }

现在你必须像下面这样改变类source中的类型Post


@SerializedName("source")

 //private List<String> source;

 private Source source; // source is an object in your response json


查看完整回答
反对 回复 2023-09-27
  • 1 回答
  • 0 关注
  • 237 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信