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

使用Java 1.8的org.json库解析复杂JSON时触发JSONException

解决org.json.JSONException: JSONObject["productTypes"] not found异常

问题原因

你写的代码错误地直接从顶层JSONObject中获取productTypes字段,但根据提供的JSON结构,productTypes是嵌套在products对象内部的二级字段,直接获取必然找不到,触发JSONException。

修正后的代码

// 获取jsonString后
JSONObject topLevelJsonObject = (JSONObject) new JSONTokener(jsonString).nextValue();

// 第一步:先获取嵌套的products对象
JSONObject productsJsonObject = topLevelJsonObject.getJSONObject("products");

// 第二步:再从products中获取productTypes
JSONObject productTypeJsonSection = productsJsonObject.getJSONObject("productTypes");

// 示例:继续解析内部字段
String storeId = productTypeJsonSection.getString("storeId");

额外优化建议

  • 指定具体依赖版本:当前依赖中的version是NOT_KNOWN,建议替换为稳定版本,比如Maven中央仓库最新稳定版:
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20240303</version>
</dependency>
  • 使用安全解析方法:如果不确定字段是否存在,用optJSONObject替代getJSONObject,字段不存在时返回null而非抛出异常:
JSONObject productsJsonObject = topLevelJsonObject.optJSONObject("products");
if (productsJsonObject != null) {
    JSONObject productTypeJsonSection = productsJsonObject.optJSONObject("productTypes");
    // 后续业务逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:02:14