【问题标题】:Volley JSONObjectRequest and JSONArrayRequest both are giving errors Android JavaVolley JSONObjectRequest 和 JSONArrayRequest 都给出错误 Android Java
【发布时间】:2021-09-04 08:38:09
【问题描述】:

我正在尝试按如下方式解析 JSON 数据:

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

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

  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 获取,当我尝试时,它会显示“......类型为 org.json.JSONObject 的无法转换为 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();
                       }

【问题讨论】:

    标签: java android android-volley


    【解决方案1】:

    试试下面的代码。

        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();
                       }
    

    【讨论】:

    • 创建 json 时出现无法解析构造函数 'JSONObject(org.json.JSONArray)'(第一行)
    • 再试一次,我已经更新了代码,将传递的响应对象添加为字符串
    • 嘿Dharmender,感谢您帮助我。它没有显示错误,但也没有做任何其他事情。我尝试打印字符串,但什么也没发生。完整的代码在上面编辑中。
    • 你能告诉我响应对象的数据类型是什么
    • 新响应的 lambda
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多