应该是BEGIN_ARRAY,但在第1行第2列路径$处是BEGIN_OBJECT吗?

时间:2018-12-20 05:53:02

标签: java android retrofit2

当我调用无天气API

https://api.apixu.com/v1/forecast.json?key=8f71b99b716f4278b98103446181912&q=Paris

问题是

  1. 我的邮递员,在翻新中使用“呼叫”,我可以获取数据
  2. 使用POJO类时出现响应错误
  

错误   预期为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());
        }
});

2 个答案:

答案 0 :(得分:2)

检查您的POJO。检查它是否与您收到的响应一致。根据您提到的错误,您在响应中得到一个JsonObject,并已在POJO中声明了一个JsonArray。

答案 1 :(得分:1)

您正在接收列表作为响应,这意味着json从jsonArray开始,但是响应是从Json Object开始,因此代码必须喜欢

Call<DetailsMain> listCall = api.getDetailsByParameter("8f71b99b716f4278b98103446181912", "Paris");

排队改造请求时,您还必须在此处更改列表(否则编译器会显示错误)

注意:DetailsMain是您的pojo类,您可以从任何在线工具/ android studio插件生成该类。