【问题标题】:Retrofit 2.0 get array of json object as a result of post requestRetrofit 2.0 根据发布请求获取 json 对象数组
【发布时间】:2017-02-03 16:24:45
【问题描述】:

我有一个响应表单服务器:

[
  {
    "ID": "1",
    "Title": "BIRATNAGAR",
    "BankID": "1",
    "BranchCode": "0",
    "LocationID": "71500200",
    "IsActive": "yes"
  },
  {
    "ID": "2",
    "Title": "BIRATNAGAR",
    "BankID": "1",
    "BranchCode": "0",
    "LocationID": "71500900",
    "IsActive": "yes"
  },
  {
    "ID": "3",
    "Title": "BIRATNAGAR",
    "BankID": "1",
    "BranchCode": "0",
    "LocationID": "94361117",
    "IsActive": "yes"
  }
]

我有改造 api 为: @POST("authapp/Restserver/api/Masterdata/getBranchListByBank") 调用> getBranchListByBank(@Query("api_key") String id);

我称它为: RetrofitArrayAPI 服务 = retrofit.create(RetrofitArrayAPI.class);

    Call<List<BankBranch>> call = service.getBranchListByBank(s);

    call.enqueue(new Callback<List<BankBranch>>() {
        @Override
        public void onResponse(Call<List<BankBranch>> call, Response<List<BankBranch>> response) {
            try {

                List<BankBranch> banks = response.body();

                for (int i = 0; i < banks.size(); i++) {

                    String id  = banks.get(i).getTitle();
                    String name = banks.get(i).getID();
                    String marks = banks.get(i).getIsActive();
                    Log.i("ashihs", id + " " + marks + " " + name);


                }


            } catch (Exception e) {
                Log.d("onResponse", "There is an error");
                e.printStackTrace();
            }
        }

        @Override
        public void onFailure(Call<List<BankBranch>> call, Throwable t) {
            Log.d("onFailure", t.toString());
        }

    });

但我无法获得银行分行的列表。我得到错误: java.lang.IllegalStateException:应为 BEGIN_ARRAY,但在第 1 行第 2 列路径 $

处为 BEGIN_OBJECT

谁能帮帮我? 提前致谢。

【问题讨论】:

标签: java android retrofit


【解决方案1】:

你可能收到了错误的 Api 请求,它应该如下所示:

API:

@POST("authapp/Restserver/api/Masterdata/getBranchListByBank")
         Call<List<BankBranch>> getBranchListByBank(@Query("api_key") String id);

方法应该是这样的:

Call<List<BankBranch>> response = apiCall.getBranchListByBank(id);
            response.enqueue(new Callback<List<BankBranch>>() {
                @Override
                public void onResponse(Call<List<BankBranch>> call, Response<List<BankBranch>> response) {
                     List<BankBranch> bankBranch = response.body(); 
                }

                @Override
                public void onFailure(Call<List<BankBranch>> call, Throwable t) {

                }
            });
        }

确保您的模型 BankBranch 适合 JSON 响应;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 2014-12-08
    • 2015-05-04
    • 2019-08-17
    • 2017-09-18
    相关资源
    最近更新 更多