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

Java读取JSON字符串失败:JSONObject未找到问题求助

解决Servlet读取JSON时JSONObject未找到的问题

嘿Stanley,咱们来解决你在Servlet解析JSON时遇到的JSONObject找不到的问题。这个错误的根源基本是依赖缺失或者导入不对,下面一步步来排查修复:

1. 确认并添加JSON库依赖

你代码里用到的HTTP.toJSONObject和JSONObject属于org.json这个基础JSON库,首先得确保项目里包含这个库:

  • 如果是Maven项目,在pom.xml中添加以下依赖(用最新稳定版本即可):
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20240303</version>
    </dependency>
    
  • 如果是普通Web项目,手动下载org.json的jar包,放到项目的WEB-INF/lib目录下,这样Web容器才能找到这个类。

2. 检查导入语句是否正确

在你的Servlet类顶部,必须导入正确的包路径,避免和其他JSON库的JSONObject混淆:

import org.json.JSONObject;
import org.json.HTTP; // 因为你用到了HTTP.toJSONObject方法

3. 验证JSON格式合法性(额外排查点)

虽然当前错误是类找不到,但可以提前确认你的jb.toString()输出的JSON字符串格式是否合法——毕竟格式错误会导致后续解析失败。你可以把DEBUG日志里的JSON内容复制到在线JSON校验工具里检查格式是否正确。

4. 补充完整的解析代码示例

给你一段完善后的代码片段,包含异常处理,帮你继续完成开发:

try {
    String jsonStr = jb.toString();
    System.out.println("JSON STRING RECEIVED**************** " + jsonStr);
    JSONObject jsonObject = HTTP.toJSONObject(jsonStr);
    
    // 读取JSON字段,注意捕获键不存在的异常
    String transID = jsonObject.getString("TransID");
    String transTime = jsonObject.getString("TransTime");
    String transAmount = jsonObject.getString("TransAmount");
    String businessShortCode = jsonObject.getString("BusinessShortCode");
    String billRefNumber = jsonObject.getString("BillRefNumber");
    
    // 这里添加你的业务逻辑,比如存储数据、生成响应等
} catch (org.json.JSONException e) {
    e.printStackTrace();
    // 处理JSON解析异常,比如返回错误响应给客户端
} catch (IOException e) {
    e.printStackTrace();
    // 处理读取请求体的IO异常
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:43:04