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

如何将JSONArray转为多维ArrayList?并处理嵌套JSON字符串转换

解决方案

你需要先把最后那个字符串形式的JSON数组解析成真正的JSONArray,再逐层转换为ArrayList<ArrayList<String>>,具体实现如下:

步骤说明

  1. 提取目标字符串:从已有的arr中获取第一个JSONArray,再取出它的最后一个元素(类型为String)。
  2. 解析字符串为JSONArray:利用JSONArray构造方法,把符合JSON格式的字符串转成可操作的JSONArray。
  3. 遍历转换为多维ArrayList:外层遍历每个子JSONArray,内层遍历每个字符串元素,分别存入对应的ArrayList。

完整代码示例

try {
    JSONArray array = new JSONArray(response.body());
    List<JSONArray> arr = new ArrayList<>();
    for (int i = 0; i < array.length(); i++) {
        arr.add(array.getJSONArray(i));
    }
    Log.d("arr", arr.toString());

    // 处理最后一个元素转换为多维ArrayList
    if (!arr.isEmpty()) {
        JSONArray firstInnerArray = arr.get(0);
        if (firstInnerArray.length() > 0) {
            // 取出目标字符串
            String targetStr = firstInnerArray.getString(firstInnerArray.length() - 1);
            // 解析为JSONArray
            JSONArray targetJsonArray = new JSONArray(targetStr);
            // 初始化多维集合
            ArrayList<ArrayList<String>> multiList = new ArrayList<>();

            // 遍历外层数组
            for (int j = 0; j < targetJsonArray.length(); j++) {
                JSONArray innerJsonArr = targetJsonArray.getJSONArray(j);
                ArrayList<String> innerList = new ArrayList<>();
                // 遍历内层数组,收集字符串元素
                for (int k = 0; k < innerJsonArr.length(); k++) {
                    innerList.add(innerJsonArr.getString(k));
                }
                multiList.add(innerList);
            }

            // 验证转换结果
            Log.d("multiList", multiList.toString());
        }
    }
} catch (JSONException e) {
    throw new RuntimeException(e);
}

注意事项

  • 确保目标字符串是标准JSON格式:如果字符串里的元素没有双引号(比如你示例中的shhs),解析会失败,需要后端返回合法的JSON格式字符串。
  • 异常处理:解析字符串为JSONArray时可能抛出JSONException,需统一捕获处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:05:01