当前位置: 首页 > 知识库问答 >
问题:

应为BEGIN_OBJECT,但为BEGIN_ARRAY:retrifit2

冯通
2023-03-14

我是JSON解析方面的新手,并试图解析以下JSON:

[
 {
"id" : 1,
"title" : {
    "rendered": "a link"
 },
"categories": [ 4,9,11 ],
"links":{
        "featuredmedia":[
        {
          "href": link
        }
           ]
    }
},
...
]
public interface MediaAPI {
    @GET("Media")
    Call<LinkList> getDetails();
}
public class LinkList {
    private List<Links> links;
    // getter and setter    
}
public class Links {
  private List<Featuredmedia> Featured = new ArrayList<Featuredmedia>();
  // getter and setter 
 }
public class Featuredmedia {
    private String href;
    // getter and setter    
}
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(ROOT_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    MediaAPI service = retrofit.create(MediaAPI.class);

    Call<LinkList> call = service.getDetails();
    call.enqueue(new Callback<LinkList>() {
        @Override
        public void onResponse(Call<LinkList> call, Response<LinkList> response) {
            if(response.isSuccessful()){                   
                successToast();
            }
            else {                                      
                failToast();
            }
        }

        @Override
        public void onFailure(Call<LinkList> call, Throwable t) {               
            Log.d("Failed", t.getMessage());
            showToast();

        }
    });

我只需要在“FeaturedMedia”中获得链接,所以我只包括了模型中的那些。我也从这里得到了一些关于错误的想法,但错误仍然存在。

任何关于如何解决这个问题的建议都会有很大的帮助。

共有1个答案

孔斌
2023-03-14

更改links模型,如下所示。

public class Links {
  private List<Featuredmedia> featuredmedia = new ArrayList<Featuredmedia>();
  // getter and setter 
 }

而且LinkList应该如下所示。

public class LinkList {
    private Links links;
    // getter and setter    
}
 类似资料: