当我调用无天气API
https://api.apixu.com/v1/forecast.json?key=8f71b99b716f4278b98103446181912&q=Paris
问题是
错误 预期为BEGIN_ARRAY,但位于行1第2列路径$
的BEGIN_OBJECT
Call<List<DetailsMain>> listCall = api.getDetailsByParameter("8f71b99b716f4278b98103446181912", "Paris");
listCall.enqueue(new Callback<List<DetailsMain>>() {
@Override
public void onResponse(Call<List<DetailsMain>> call, Response<List<DetailsMain>> response) {
DetailsMainList.setValue(response.body());
Log.d("data", "" + response.body());
}
@Override
public void onFailure(Call<List<DetailsMain>> call, Throwable t) {
Log.d("Error", "" + t.getMessage());
}
});
答案 0 :(得分:2)
检查您的POJO。检查它是否与您收到的响应一致。根据您提到的错误,您在响应中得到一个JsonObject,并已在POJO中声明了一个JsonArray。
答案 1 :(得分:1)
您正在接收列表作为响应,这意味着json从jsonArray开始,但是响应是从Json Object开始,因此代码必须喜欢
Call<DetailsMain> listCall = api.getDetailsByParameter("8f71b99b716f4278b98103446181912", "Paris");
排队改造请求时,您还必须在此处更改列表(否则编译器会显示错误)
注意:DetailsMain是您的pojo类,您可以从任何在线工具/ android studio插件生成该类。