在“ org.json.JSONException:值{data}”中获取JSONArray结果

时间:2019-02-19 12:10:12

标签: android arrays json

我正在使用Volley来请求未启动的API,但是当我尝试以callback的身份请求它时,它并没有给我任何错误,但是我知道这是错误的方法,因为我接收的数据是{{1} }

我的方法

event

日志 由于JSONArray太大而无法在此处发布,因此这是有道理的

JsonObjectRequest

如果您想查看JSONArray,请点击链接“ JSONArray

我也看过this问题,但这完全不同

您只需注册一个帐户here即可请求密钥。

2 个答案:

答案 0 :(得分:1)

您需要首先创建jsonObject。您请求JSONArray,但服务器响应为JSONObject。尝试StringRequest获取JSONObject

尝试一下:

    StringRequest stringRequest = new StringRequest(Request.Method.GET,
            URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    try {
                        // Loop through the array elements
                        JSONObject jsonObject = new JSONObject(response);
                        JSONArray jsonArray = jsonObject.getJSONArray("results");
                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject js = jsonArray.getJSONObject(i);
                            Log.d("TESTING", js.getString("id"));
                        }
                        p.dismiss();
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
             Log.d("TESTING",error.getMessage()); 
        }
    })
};

RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);

希望这会起作用。

答案 1 :(得分:0)

您是对json对象的请求,但请求时间是您调用jsonarrayrequest,因此JsonException来了

    JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET,url,
            null, new Response.Listener<JSONObject>() {
   @Override
   public void onResponse(JSONObject response) {
       try {
           JSONArray jsonArray = response.getJSONArray("results");
            for (int i = 0; i < jsonArray.length(); i++) {
              JSONObject js = jsonArray.getJSONObject(i);
               Log.d("TESTING",js.getString("id"));
}
       } catch (JSONException e) {
           e.printStackTrace();
       }
   }
}, new Response.ErrorListener() {
   @Override
   public void onErrorResponse(VolleyError error) {
       VolleyLog.e("Error: ", error.getMessage());
   }
});