Retrofit2 预期BEGIN_ARRAY,但BEGIN_OBJECT Reddit JSON 响应



在我开始之前,我想为重复这个问题而道歉,但我只是想更好地了解它是如何工作的,因为我环顾四周,但无法找到与我的 JSON 响应相关的答案。

这是我尝试使用 Retrofit2 读取的 JSON 响应。 (https://www.reddit.com/r/popular.json(

{
kind: "Listing",
data: {
modhash: "9nsu2iqwupcf7d47e57c6f70795c9fde52e5566bf8b7731884",
children: [
{
kind: "t3",
data: {}
},
{
kind: "t3",
data: {}
},
{
kind: "t3",
data: {}
},
And so on...

我是编程新手,过去曾与Retrofit合作过我的几个小项目。在这些项目中,我可以轻松地下载数据,就像我在开始时经常遇到 Array 一样,但在这种情况下,它是 Object。

我刚刚使用 POJO 更新了类以创建 JSON 响应结构,但在进入调试模式后它仍然没有返回任何内容。如果您需要任何进一步的信息,请告诉我。非常感谢您的帮助

public void getPopularPost() {
popularPosts = new ArrayList<>();
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("https://www.reddit.com/")
.build();
FromAPI fromAPI = retrofit.create(FromAPI.class);
final Call<Rootobject> call = fromAPI.getPopularPosts();
call.enqueue(new Callback<Rootobject>() {
@Override
public void onResponse(Call<Rootobject> call, Response<Rootobject> response) {
response.body();
}
@Override
public void onFailure(Call<Rootobject> call, Throwable t) {
}
});
}

====

====================================================================================
public interface FromAPI {
@GET("r/popular.json")
Call<Rootobject> getPopularPosts();
}

====

====================================================================================
public class Rootobject {
private String kind;
private Data data;
}
public class Data {
private String modhash;
private ArrayList<Child> children;
//    private String after;
//    private Object before;    
}
public class Child {   
private String kind;
private Data2 data;    
}
public class Data2 {    
private String domain;
private String author;
private String title;
private int num_comments;
private int ups;
private String url;    
}

转到此站点 Json 到 Java Pojo 将整个 json 粘贴到那里,它会显示所有需要创建的 pojo 类。您可能缺少一些或创建不正确。

最新更新