1. JSONArray 简介
- JSONArray 是 Java 中用于表示 JSON 格式中的数组结构的类,通常来自于常用的 JSON 库,如:
- org.json(最经典轻量)
- com.alibaba.fastjson(阿里巴巴开源库)
- com.google.gson(谷歌库,JSONArray为JsonArray)
- Jackson(更强大的数据绑定框架,也支持数组)
- 它封装了JSON数组的数据结构,支持存储任意数量的 JSON 元素(对象、数组、字符串、数字等)。
2. 常用 JSON 库及 JSONArray 类
库名称 | 包名 | JSONArray 类(数组表示) |
---|---|---|
org.json | org.json | JSONArray |
fastjson | com.alibaba.fastjson | JSONArray |
Gson | com.google.gson | JsonArray |
Jackson | com.fasterxml.jackson | ArrayNode (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与数据库字段映射的实践案例
欢迎随时告诉我!
发表回复