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

如何提取JSON文件中方括号数组的值?现有代码无法生效

如何正确从JSON对象中提取数组值

你的代码问题出在直接用数组名称创建JSONArray实例——实际上,你要提取的数组是嵌套在一个JSON对象里的,不是独立的JSON数组字符串。我们需要先解析整个JSON对象,再从中取出目标数组。

问题分析

你给出的JSON格式是:

{"name_of_the_array": ["value_1", "value_2"]}

这是一个包含数组的JSON对象,而不是一个单独的JSON数组。你的原代码把"array_name"(数组的键名)传入JSONArray构造函数,这相当于尝试把字符串"array_name"解析成JSON数组,显然会报错,因为它不符合JSON数组的格式要求(JSON数组必须以[开头、]结尾)。

修正后的代码

下面是可以正常运行的代码,包含完整的解析和遍历逻辑:

import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;

public class JsonArrayExtractor {
    public static void main(String[] args) {
        // 假设你的JSON字符串是这样的
        String jsonString = "{\"name_of_the_array\": [\"value_1\", \"value_2\"]}";
        List<String> list = new ArrayList<>();

        try {
            // 1. 先将JSON字符串解析为JSONObject
            JSONObject jsonObject = new JSONObject(jsonString);
            // 2. 从JSONObject中获取指定键对应的JSONArray
            JSONArray array = jsonObject.getJSONArray("name_of_the_array");
            // 3. 遍历数组,将元素添加到list中
            for (int i = 0; i < array.length(); i++) {
                String str = array.getString(i); // 推荐用getString直接获取字符串,避免类型转换问题
                list.add(str);
            }

            // 打印结果验证
            System.out.println("提取到的数组元素:" + list);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

关键注意点

  • 必须先解析整个JSON对象,再通过键名获取对应的数组
  • 遍历数组时,优先使用getString(i)而不是get(i).toString(),这样可以避免如果元素不是字符串类型时出现的转换问题
  • 记得捕获JSONException(或者直接捕获Exception),因为JSON解析过程中可能会出现格式错误、键名不存在等问题

内容的提问来源于stack exchange,提问作者Ido G Zisman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:03:24