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

如何无需创建多变量,实现向JSONArray中添加多个子JSONArray

嘿,你想要的这种无多余变量的写法完全可以实现,而且能让代码更紧凑!不过得注意一个小细节——很多JSON库(比如常用的org.json)里的JSONArray.addAll()方法返回的是boolean类型,而不是JSONArray本身,所以你原来写的array1.add(new JSONArray().addAll(...))其实会把true/false添加到父数组里,而不是你想要的子JSONArray。

给你两种靠谱的实现方式:

方式一:利用JSONArray的Collection构造方法

这是最简洁的写法,直接把字符串列表传给子JSONArray的构造器,一步到位:

import org.json.JSONArray;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        JSONArray array1 = new JSONArray();
        // 直接用List初始化子JSONArray并添加到父数组
        array1.add(new JSONArray(Arrays.asList("ex1", "ex2", "ex3")));
        array1.add(new JSONArray(Arrays.asList("ex4", "ex5", "ex6")));
        
        System.out.println(array1.toString());
        // 输出:[["ex1","ex2","ex3"],["ex4","ex5","ex6"]]
    }
}

方式二:双括号初始化块(匿名内部类)

如果需要更灵活的添加逻辑(比如不是一次性加整个列表),可以用双括号初始化,本质是创建匿名内部类并在初始化块里添加元素:

import org.json.JSONArray;

public class Main {
    public static void main(String[] args) {
        JSONArray array1 = new JSONArray();
        array1.add(new JSONArray() {{
            add("ex1");
            add("ex2");
            add("ex3");
            // 还能加其他逻辑,比如条件判断添加元素
            if (true) {
                add("extra");
            }
        }});
        array1.add(new JSONArray() {{
            add("ex4");
            add("ex5");
            add("ex6");
        }});
        
        System.out.println(array1.toString());
        // 输出:[["ex1","ex2","ex3","extra"],["ex4","ex5","ex6"]]
    }
}

⚠️ 小提醒:双括号初始化会创建匿名内部类,可能会有轻微的内存开销,而且如果不小心持有外部类引用可能导致内存泄漏,但在简单的场景下完全没问题。

两种方式都不需要创建额外的array2、array3这类变量,直接在添加到父数组的同时完成子数组的初始化~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:40:06