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
相关产品推荐
相关产品推荐

