• 异常: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

  • 相关阅读:
    JavaScript中严格模式"use strict";需注意的几个雷区:
    React 学习,需要注意几点
    安装了VS2012 还有Update4 我的Silverlight5安装完后 我的Silverlight4项目打不开
    SilverLight抛出 System.InvalidOperationException: 超出了2083 的最大URI
    Dictionary集合运用
    配置OpenCV开发环境心得
    调用第三方库出现的问题
    7-19 答疑课小结
    工欲善其事必先利其器(篇一)
    VMware Ubuntu Kaldi
  • 原文地址:https://www.cnblogs.com/mada0/p/4864787.html
Copyright © 2020-2023  润新知