1. 什么是JSON数组
JSON,全称 JavaScript Object Notation,是一种轻量级的数据交换格式,常用于浏览器与服务器之间的数据交互。而JSON数组,就是JSON格式中一种常用的数据类型,它是一个存储有序且值可重复的数据集合。
JSON数组的基本语法
JSON数组的基本语法与JavaScript中的数组类似,采用中括号 [] 的方式来表示,多个元素之间使用英文逗号隔开。其中,每个元素可以是:数字、布尔值、字符串、对象、数组、null。
// JSON数组示例
var jsonArr = [
1,
true,
"hello world",
{"id": 1, "name": "apple"},
[1, 2, 3],
null
];
JSON数组的常见场景
JSON数组常见于服务器端返回的数据中,例如用户列表、商品列表等。前端可以通过ajax异步请求服务器端的数据,再通过JSON.parse()方法进行解析,最终得到JSON数组,从而实现页面的渲染。
2. 在Java中使用JSON数组
2.1 导入JSON库
在Java中使用JSON数组,需要先导入相应的JSON库。目前比较常用的JSON库有:org.json、fastjson、gson等。以下以org.json为例,简要介绍其使用方法:
// 导入org.json库
import org.json.JSONArray;
import org.json.JSONObject;
2.2 将JSON字符串转化为JSONArray
在Java中,我们通常先将从服务器端获取的JSON字符串,转化为JSONArray对象。可以利用org.json库提供的JSONArray类,使用其构造方法或者静态方法parse()将JSON字符串转化为JSONArray对象。
String jsonStr = "[1, 2, 3, 4, 5]"; // 待解析的JSON字符串
JSONArray jsonArray;
// 方法一:使用JSONArray构造方法
jsonArray = new JSONArray(jsonStr);
// 方法二:使用静态方法parse()
jsonArray = JSONArray.parse(jsonStr);
2.3 遍历JSONArray
得到JSONArray对象后,可以使用for循环逐个遍历其中的元素,也可以通过JSONArray对象提供的一些其他方法获取元素。
JSONArray jsonArray = new JSONArray("[1, 2, 3, 4, 5]"); // 待遍历的JSONArray
// 方法一:使用for循环遍历
for (int i = 0; i < jsonArray.length(); i++) {
int num = jsonArray.getInt(i); // 获取第i个元素,并解析为int类型
System.out.println(num); // 输出当前元素
}
// 方法二:使用get()方法获取元素
int firstNum = jsonArray.getInt(0); // 获取第一个元素
System.out.println(firstNum);
// 方法三:使用iterator()方法获取迭代器
Iterator
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
2.4 构造JSONArray
还可以在Java中直接构造JSONArray对象,比如存储一些简单类型的数据。
// 构造JSONArray对象
JSONArray jsonArray = new JSONArray();
// 添加元素
jsonArray.put(1);
jsonArray.put(2);
jsonArray.put(3);
// 输出JSONArray
System.out.println(jsonArray);
3. JSON数组的注意事项
3.1 JSON数组的下标从0开始
类似于Java中的数组,JSON数组的下标也是从0开始的,因此遍历时需要注意索引。
JSONArray jsonArray = new JSONArray("[1, 2, 3, 4, 5]"); // 待遍历的JSONArray
for (int i = 0; i < jsonArray.length(); i++) {
int num = jsonArray.getInt(i); // 获取第i个元素
System.out.println(num);
}
3.2 JSONArray对象的get()方法
JSONArray对象提供了get()方法以获取元素。但是,如果get()方法中传入的参数不合法,可能会抛出异常。例如,如果JSONArray对象中存储的是字符串而get()方法传入的是int类型,则会抛出异常。
JSONArray jsonArray = new JSONArray(); // 创建一个空的JSONArray
// 往JSONArray中添加一个字符串元素
jsonArray.put("hello world");
// 由于数组中存储的是字符串,因此使用getInt()方法时会抛出异常
int num = jsonArray.getInt(0);
System.out.println(num);
3.3 JSONArray对象的put()方法
JSONArray对象提供了put()方法以向JSONArray中添加元素。但是,如果向JSONArray中存储了不同类型的元素,则会抛出异常。
JSONArray jsonArray = new JSONArray(); // 创建一个空的JSONArray
// 往JSONArray中添加一个整型元素
jsonArray.put(1);
// 再往JSONArray中添加一个字符串元素,会抛出异常
jsonArray.put("hello world");
System.out.println(jsonArray);
4. 总结
通过本文的介绍,我们了解了JSON数组的基本语法和常见场景,在Java中使用JSON数组的方法,以及一些需要注意的事项。