You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:主ListView跳转详情Activity显示为空,伴JSON输入异常(明日截止)

解决org.json.JSONException: 在字符2处到达输入末尾及详情Activity为空问题

别慌!这个错误其实很常见,咱们快速定位问题解决,先帮你搞定截止日期的事儿~

首先,org.json.JSONException: 在字符2处到达输入末尾 这个错误的核心原因是:你要解析的FinalJSonObject不是一个完整、合法的JSON字符串——它只到第2个字符就结束了,导致JSON解析器无法正常工作,这也是你详情Activity显示为空的直接原因(因为没拿到有效数据)。

给你几个针对性的排查和解决步骤:

  • 先确认FinalJSonObject的真实内容
    在doInBackground方法的最开头,加一行日志把这个字符串打出来:

    Log.d("JSON_CHECK", "FinalJSonObject内容:" + FinalJSonObject);
    

    运行后看Logcat,你会发现这个字符串要么是残缺的(比如只有[{"就结束了),要么根本不是JSON格式。

  • 追溯数据来源,修复不完整问题
    根据FinalJSonObject的来源分情况处理:

    • 如果是网络请求获取的:检查网络请求是否成功(响应码是不是200),有没有完整读取响应体——比如是不是只读取了部分字节就停止了;
    • 如果是本地存储(文件/SharedPreferences)读取的:检查数据写入时是不是完整,有没有被意外截断或者写入失败。
  • 修正JSON解析逻辑,兼容格式问题
    从你的代码片段看,你直接把FinalJSonObject当成JSON数组解析,但要确认它本身就是数组格式(开头[,结尾])。如果它实际是JSON对象(开头{),强行用JSONArray解析肯定报错。可以加个容错处理:

    @Override
    protected Void doInBackground(Void... arg0) {
        try {
            if(FinalJSonObject != null) {
                Log.d("JSON_CHECK", "FinalJSonObject内容:" + FinalJSonObject);
                try {
                    // 先尝试解析为数组
                    JSONArray jsonArray = new JSONArray(FinalJSonObject);
                    for(int i=0; i<jsonArray.length(); i++) {
                        JSONObject jsonObject = jsonArray.getJSONObject(i);
                        // 你的数据处理逻辑...
                    }
                } catch (JSONException e) {
                    // 数组解析失败,尝试解析为对象
                    try {
                        JSONObject jsonObject = new JSONObject(FinalJSonObject);
                        // 处理单个对象的逻辑...
                    } catch (JSONException ex) {
                        ex.printStackTrace();
                        Log.e("JSON_ERROR", "JSON格式完全错误:" + ex.getMessage());
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    
  • 同步修复详情Activity的显示问题
    等JSON解析正常拿到数据后,再检查:

    • 从ListView跳转时,有没有通过Intent把解析好的数据传递给详情页(比如intent.putExtra("data", jsonObject.toString()));
    • 详情Activity有没有正确接收数据并绑定到UI控件上。

紧急小技巧:如果时间实在紧张,可以先找一段合法的测试JSON硬编码到FinalJSonObject里,先让详情页能正常显示,之后再慢慢修复数据来源的问题,先应付截止日期再说~

内容的提问来源于stack exchange,提问作者Natlus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:49:44