使用翻新解析Json给出null

时间:2018-11-22 09:15:53

标签: java android json retrofit2

我正在尝试使用Retrofit2从Json获取数据,但我却得到了null。 我不确定应该在接口GET方法中放什么?

Json Datum回复:

public class DatumResponse {

@SerializedName("data")
@Expose
private List<Datum> data = null;
@SerializedName("total")
@Expose
private Integer total;

public List<Datum> getData() {
    return data;
}

public void setData(List<Datum> data) {
    this.data = data;
}

public Integer getTotal() {
    return total;
}

public void setTotal(Integer total) {
    this.total = total;
}

改装类

public class JsonApi {

public static final String BASE_URL = "https://api.deezer.com";
private static Retrofit retrofit = null;


public static Retrofit getClient() {
    if (retrofit==null) {
        retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    return retrofit;
}

和我的界面:

public interface IDatum {

@GET("chart")
Call<DatumResponse> getDatum();

非常感谢。

1 个答案:

答案 0 :(得分:1)

将完整的json添加到JsonScheme2pojo中,您将获得这些类

Image

此处 TrackDetailsModel 是主模型类。使用它可以获取其他数据。

现在更改

@GET("chart")
Call<DatumResponse> getDatum();

收件人

@GET("chart")
Call<TrackDetailsModel> getDatum();

使用此获取数据

ApiInterface apiInterface = ApiClient.getClient().create(ApiInterface.class);

Call<TrackDetailsModel> call = apiInterface.getDatum();

    call.enqueue(new Callback<TrackDetailsModel>() {
    @Override
    public void onResponse(Call<TrackDetailsModel> call, Response<TrackDetailsModel> response) {
            if (response.isSuccessful()) {
                 TrackDetailsModel model = response.body();
                 String trackTitle = model.getTracks().getData().getTitle();

                    }
                }

    @Override
    public void onFailure (Call <TrackDetailsModel> call, Throwable t){
          call.cancel();
          Toast.makeText(Main.this,"Error: " + t.getLocalizedMessage(),Toast.LENGTH_SHORT).show();
                }
            });