异常:org.json.JSONException: End of input at character 0 of

在使用Gson时遇到org.json.JSONException: End of input at character 0 of 异常。

public static void jsonArrayRequest(final MainActivity mainActivity, RequestQueue rq, String uri,
            TextView tv1, List<News> datas) {
        final Gson g = new Gson();
        String json = g.toJson(datas);
        try {
            JSONArray jsonArray = new JSONArray(json);
            JsonArrayRequest jar = new JsonArrayRequest(Method.POST, uri, jsonArray,
                    new Listener<JSONArray>() {

                        @Override
                        public void onResponse(JSONArray array) {
                            //如果返回值为空,JSONArray无法把它转换成JSONArray则会报End of input at character 0 of异常
                            //如果返回值不符合json标准,也会报异常
                            String json = array.toString();
                            Type typeOfT = new TypeToken<List<News>>() {
                            }.getType();
                            List<News> list = g.fromJson(json, typeOfT);
                            Log.i("pepelu", list.get(0).getTitle());
                        }
                    }, new ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError arg0) {
                            Toast.makeText(mainActivity, "error:" + arg0.getMessage(), Toast.LENGTH_SHORT)
                                    .show();
                            Log.i("pepelu", arg0.getMessage());
                        }
                    }) {
                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {
                    Map<String, String> map = new HashMap<String, String>();
                    map.put("accept", "application/json");
                    map.put("content-type", "application/json;charset=utf-8");
                    return map;
                }
            };
            rq.add(jar);
        } catch (JSONException e) {
            e.printStackTrace();
        }

    }

原因:在请求发送后会调用 public void onResponse(JSONArray array)方法,如果服务端无返回值,就会报End of input at character 0 of 异常。如果返回值不符合json标准,也会报异常。

解决办法:1.在服务器端返回一个缺省json值。2.使用其他JSON类代替。3.关闭异常输出

如果返回值无法转换成json也会报异常。

http://stackoverflow.com/questions/8740381/getting-a-jsonexception-end-of-input-at-character-0

原文地址:https://www.cnblogs.com/mada0/p/4864787.html