java.lang.IllegalStateException:预期为BEGIN_ARRAY,但已进行BEGIN_OBJECT改装

问题描述 投票:-1回答:2

请,我有问题。我想获取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;
java android retrofit illegalstateexception
2个回答
1
投票
为您的源对象创建一个类,如下所示。

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

希望它对您有帮助。

快乐编码

-1
投票
{ "status": "ok", "totalResults": 10, "articles": [ { "source": { "id": "ansa", "name": "ANSA.it" }, "author": "ANSA.it", "title": "Bandiere a mezz'asta, Trieste a lutto - Ultima Ora", "description": "Trieste ferita. Trieste listata a lutto. (ANSA)", "url": "http://www.ansa.it/sito/notizie/topnews/2019/10/05/bandiere-a-mezzasta-trieste-a-lutto_2a4c44de-1f91-4e6d-a82d-b4a9747791a4.html", "urlToImage": "http://www.ansa.it/webimages/img_700/2019/10/5/f7735dd33aad96bb9db93d42f5bb2c48.jpg", "publishedAt": "2019-10-05T13:35:00Z", "content": "(ANSA) - TRIESTE, 5 OTT - Trieste ferita. Trieste listata a\r\nlutto. Bandiere a mezz'asta su tutti gli edifici pubblici\r\ncittadini a cominciare dalla Questura dove in tarda mattinata si\r\nè tenuta una cerimonia alla presenza, fra gli altri, del\r\nQuestore, Giuse… [+819 chars]" }, { "source": { "id": "ansa", "name": "ANSA.it" }, "author": "ANSA.it", "title": "Bandiere a mezz'asta, Trieste a lutto - Ultima Ora", "description": "Trieste ferita. Trieste listata a lutto. (ANSA)", "url": "http://www.ansa.it/sito/notizie/topnews/2019/10/05/bandiere-a-mezzasta-trieste-a-lutto_2a4c44de-1f91-4e6d-a82d-b4a9747791a4.html", "urlToImage": "http://www.ansa.it/webimages/img_700/2019/10/5/f7735dd33aad96bb9db93d42f5bb2c48.jpg", "publishedAt": "2019-10-05T13:35:00Z", "content": "(ANSA) - TRIESTE, 5 OTT - Trieste ferita. Trieste listata a\r\nlutto. Bandiere a mezz'asta su tutti gli edifici pubblici\r\ncittadini a cominciare dalla Questura dove in tarda mattinata si\r\nè tenuta una cerimonia alla presenza, fra gli altri, del\r\nQuestore, Giuse… [+819 chars]" }, ... ] }
© www.soinside.com 2019 - 2024. All rights reserved.