1. JSONArray 简介

  • JSONArray 是 Java 中用于表示 JSON 格式中的数组结构的类,通常来自于常用的 JSON 库,如:
    • org.json(最经典轻量)
    • com.alibaba.fastjson(阿里巴巴开源库)
    • com.google.gson(谷歌库,JSONArray为JsonArray)
    • Jackson(更强大的数据绑定框架,也支持数组)
  • 它封装了JSON数组的数据结构,支持存储任意数量的 JSON 元素(对象、数组、字符串、数字等)。

2. 常用 JSON 库及 JSONArray 类

库名称包名JSONArray 类(数组表示)
org.jsonorg.jsonJSONArray
fastjsoncom.alibaba.fastjsonJSONArray
Gsoncom.google.gsonJsonArray
Jacksoncom.fasterxml.jacksonArrayNode (JSON数组)

3. org.json.JSONArray 基本用法

3.1 创建 JSONArray

import org.json.JSONArray;
import org.json.JSONObject;

public class JsonArrayExample {
    public static void main(String[] args) {
        // 空数组
        JSONArray jsonArray = new JSONArray();

        // 添加元素
        jsonArray.put("apple");
        jsonArray.put(123);
        jsonArray.put(true);

        // 添加JSONObject对象
        JSONObject obj = new JSONObject();
        obj.put("name", "Alice");
        obj.put("age", 25);
        jsonArray.put(obj);

        System.out.println(jsonArray.toString());
    }
}

输出:

["apple",123,true,{"name":"Alice","age":25}]

3.2 解析 JSONArray 字符串

String jsonStr = "[\"apple\",123,true,{\"name\":\"Alice\",\"age\":25}]";
JSONArray jsonArray = new JSONArray(jsonStr);

// 遍历
for (int i = 0; i < jsonArray.length(); i++) {
    Object element = jsonArray.get(i);
    System.out.println(element);
}

3.3 获取特定类型元素

String fruit = jsonArray.getString(0);
int number = jsonArray.getInt(1);
boolean flag = jsonArray.getBoolean(2);
JSONObject obj = jsonArray.getJSONObject(3);

4. fastjson 的 JSONArray 用法

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class FastJsonArrayExample {
    public static void main(String[] args) {
        JSONArray array = new JSONArray();
        array.add("apple");
        array.add(123);
        array.add(true);

        JSONObject obj = new JSONObject();
        obj.put("name", "Bob");
        obj.put("score", 98);
        array.add(obj);

        System.out.println(array.toJSONString());
    }
}

5. Gson 中的 JsonArray 用法

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

public class GsonJsonArrayExample {
    public static void main(String[] args) {
        JsonArray jsonArray = new JsonArray();

        jsonArray.add("banana");
        jsonArray.add(456);
        jsonArray.add(false);

        JsonObject obj = new JsonObject();
        obj.addProperty("city", "Shanghai");
        obj.addProperty("population", 24150000);
        jsonArray.add(obj);

        System.out.println(jsonArray.toString());
    }
}

6. 常见应用场景

场景说明
接收或返回 API 的数组RESTful接口请求/响应中处理数组类型字段
多数据集合操作存储或组合多个对象,便于传输和存储
JSON数据解析从字符串转换成对象进行后续操作
配合数据库或文件存储存储列表数据,方便序列化与反序列化

7. 进阶技巧

  • 深度嵌套JSONArray,数组中元素还可以是JSONArray,实现树形数据结构。
  • 类型安全处理,结合 instanceof 判断元素类型避免异常。
  • 异常处理,访问不存在索引会抛异常,应捕获或用 opt 系列方法安全访问。
  • 性能考虑,大规模JSONArray操作应注意内存和解析性能。
  • 与Java集合互转,JSONArray 和 List/Map 互相转换方便数据操作。

8. 例子:从JSONArray转换为Java List

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

public class JsonArrayToList {
    public static void main(String[] args) {
        String jsonStr = "[\"apple\", \"banana\", \"cherry\"]";
        JSONArray jsonArray = new JSONArray(jsonStr);

        List<String> list = new ArrayList<>();
        for (int i = 0; i < jsonArray.length(); i++) {
            list.add(jsonArray.getString(i));
        }

        System.out.println(list);
    }
}

9. 总结

  • JSONArray 是处理JSON数组的核心类,方便Java程序操作JSON数据。
  • 推荐根据项目技术栈选择对应的库,如轻量 org.json、高性能 fastjson、功能强大 Gson 或 Jackson
  • 结合异常处理、类型检测和性能优化,写出健壮且高效的JSON数组操作代码。

如果你需要,我可以帮你提供:

  • 复杂JSON结构的解析示例
  • JSONArray与Java对象的映射技巧(如用Gson的TypeToken)
  • JSON与数据库字段映射的实践案例

欢迎随时告诉我!