首页 > 解决方案 > Volley JSONObjectRequest 和 JSONArrayRequest 都给出错误 Android Java

问题描述

我正在尝试解析 JSON 数据,如下所示:

{"Returnresult":[{"api_status":"1","user_temp_id":"280","otp":"1234"}]}

我按照Android Developer网站上给出的教程进行了尝试

  String url = "some url";

    RequestQueue queue = Volley.newRequestQueue(this);
    JsonArrayRequest jsonArrayRequest;
    jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url, null,
            response -> {

                String api_status = null;
                try {
                    JSONArray obj = response.getJSONArray(0);
                    api_status = obj.getString(0);
                    System.out.println(" api_status is" + api_status);
               
                      if (api_status.equals("1")) {
                      //some code
                      }

我被困在

JSONArray obj = response.getJSONArray(0); // Tried as array this time
  1. 如果我尝试将其作为 JSONArray 获取,则当我尝试时,错误显示“....of type org.json.JSONObject cannot be convert to JSONArray”:

    JSONObject obj = response.getJSONObject(0);

  2. 如果我尝试将其作为 JSONObject 获取,则错误显示“....类型 org.json.JSONArray 无法转换为 JSONObject”,JSONObjectRequest 位于顶部

请帮忙 !

根据 Dharmender 编辑的代码:

  RequestQueue requestQueue = Volley.newRequestQueue(trial1.this);

        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url, null,
                response ->  {
                    System.out.println(response.toString());
                       try {
                           JSONObject json = new JSONObject(response.toString());
                           JSONArray returnresult = json.getJSONArray("Returnresult");

                           for(int countItem = 0;countItem<returnresult.length();countItem++){
                               JSONObject returnObject = returnresult.getJSONObject(countItem);
                               String apiStatus=returnObject.isNull("api_status")?"":returnObject.optString("api_status");
                               System.out.println("Status is "+apiStatus);
                           }
                    } catch (JSONException e) {
                           e.printStackTrace();
                       }

标签: javaandroidandroid-volley

解决方案


尝试使用以下代码。

    RequestQueue requestQueue = Volley.newRequestQueue(trial1.this);

    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET, url, null,
            response ->  {
                System.out.println(response.toString());
                   try {
                       JSONObject json = new JSONObject(response.toString());
                       JSONArray returnresult = json.getJSONArray("Returnresult");

                       for(int countItem = 0;countItem<returnresult.length();countItem++){
                           JSONObject returnObject = returnresult.getJSONObject(countItem);
                           String apiStatus=returnObject.isNull("api_status")?"":returnObject.optString("api_status");
                           System.out.println("Status is "+apiStatus);
                       }
                } catch (JSONException e) {
                       e.printStackTrace();
                   }

推荐阅读