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

Java使用org.json解析嵌套JSON遇错误求助

解决org.json解析嵌套JSON的错误

错误原因分析

你的代码存在三个关键问题,直接触发了报错:

  1. 重复构造JSONArray:JSON.getJSONArray("data")已经返回合法的JSONArray对象,你却将它传入new JSONArray()构造器。org.json的JSONArray构造器仅接受字符串、集合或数组类型入参,传入另一个JSONArray会抛出异常。
  2. 循环变量混乱:初始化循环变量为z=1,但判断条件误用了未定义的i;同时JSON数组索引从0开始,从1遍历会跳过第一个元素。
  3. 冗余包装JSONObject:data.getJSONObject(z)已经返回JSONObject实例,无需再用new JSONObject()重复包装。

修正后的代码

import org.json.*;

// content1为你从网络获取的JSON内容字符串
JSONObject rootJson = new JSONObject(content1.toString());
JSONArray playerDataArray = rootJson.getJSONArray("data");

// 遍历玩家配置数组,索引从0开始
for (int i = 0; i < playerDataArray.length(); i++) {
    JSONObject playerProfile = playerDataArray.getJSONObject(i);
    // 打印完整玩家配置
    System.out.println(playerProfile.toString());
    
    // 若需提取具体字段,例如uuid和name:
    // String uuid = playerProfile.getString("uuid");
    // String name = playerProfile.getString("name");
    // System.out.println("玩家UUID:" + uuid + ",名称:" + name);
}

额外说明

从你的示例JSON结构来看,data字段本身就是存储玩家配置的数组,每个元素都是无命名的JSONObject,直接遍历该数组即可获取所有玩家配置。如果需要提取配置中的具体字段,使用getString()、getInt()等对应类型的方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:11:19