You need to enable JavaScript to run this app. Java开发中如何从嵌套JSON的指定数组仅获取首个元素值而非完整数组
优惠活动
大模型
产品
解决方案
定价
更多

Java开发中如何从嵌套JSON的指定数组仅获取首个元素值而非完整数组

问题核心原因
  • 当前代码的错误点在于,module1对象下键"1"对应的JSON值是数组结构,并非普通字符串
  • 直接调用contact.getString("1")时,JSON解析库会将整个数组对象序列化为字符串返回,最终输出的["OS", "Operating system"]就是序列化后的完整数组内容,没有拆分单个元素
具体修正方法

要拿到数组的第一个元素,需要两步操作:

  • 先将键"1"对应的内容按JSON数组类型读取,不要直接按字符串解析
  • 从读取到的数组中,按照索引位置取对应的单个字符串元素,数组索引从0开始计数
  • 核心替换代码片段:
    // 读取"1"对应的JSON数组
    JSONArray courseArray = contact.getJSONArray("1");
    // 取数组索引0的元素,即需要的"OS"字符串
    String targetCourseName = courseArray.getString(0);
    
修正后完整方法代码
private void addItemsFromJSON() {
    try {
        JSONObject jsonObject = new JSONObject(readJSONDataFromFile());
        JSONArray coursea = jsonObject.getJSONArray("ict");

        for (int i = 0; i < coursea.length(); i++) {
                JSONObject cc = coursea.getJSONObject(i);
                JSONObject contact = cc.getJSONObject("module1");
                JSONArray courseArray = contact.getJSONArray("1");
                String targetCourseName = courseArray.getString(0);
                courses.add(new course(targetCourseName, "", String.valueOf(content.get(ran.nextInt(content.size())))));
        }
    } catch (JSONException | IOException e) {
        Log.d(TAG, "addItemsFromJSON: 777", e);
    }
}
注意点
  • 数组索引从0开始,传入索引0取第一个元素"OS",如果传入索引1则会取到第二个元素"Operating system",可以根据实际需求调整
  • 不要直接对数组类型的JSON值调用getString方法,否则会触发序列化输出整个数组的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 16:06:04