Java遍历JSON数组的6种实用方法
在Java开发中,处理JSON数据是一项常见任务,而遍历JSON数组更是其中的基础操作,本文将详细介绍6种在Java中遍历JSON数组的方法,帮助开发者根据不同场景选择最合适的解决方案。
使用org.json库遍历JSON数组
org.json是一个轻量级的JSON处理库,使用简单直观,以下是遍历JSON数组的基本方法:
import org.json.JSONArray;
import org.json.JSONObject;
public class JsonArrayTraversal {
public static void main(String[] args) {
String jsonStr = "[{\"name\":\"张三\",\"age\":25},{\"name\":\"李四\",\"age\":30}]";
JSONArray jsonArray = new JSONArray(jsonStr);
// 方法1:使用for循环遍历
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
System.out.println("姓名: " + jsonObject.getString("name") +
", 年龄: " + jsonObject.getInt("age"));
}
// 方法2:使用增强for循环
for (Object obj : jsonArray) {
JSONObject jsonObject = (JSONObject) obj;
System.out.println("姓名: " + jsonObject.getString("name") +
", 年龄: " + jsonObject.getInt("age"));
}
}
}
使用Gson库遍历JSON数组
Google的Gson库是Java中处理JSON的流行选择,提供了更面向对象的方式:
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
public class GsonJsonTraversal {
public static void main(String[] args) {
String jsonStr = "[{\"name\":\"张三\",\"age\":25},{\"name\":\"李四\",\"age\":30}]";
Gson gson = new Gson();
JsonArray jsonArray = gson.fromJson(jsonStr, JsonArray.class);
// 遍历JsonArray
for (JsonElement element : jsonArray) {
JsonObject jsonObject = element.getAsJsonObject();
System.out.println("姓名: " + jsonObject.get("name").getAsString() +
", 年龄: " + jsonObject.get("age").getAsInt());
}
}
}
使用Jackson库遍历JSON数组
Jackson是另一个强大的JSON处理库,提供了高性能的JSON处理能力:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class JacksonJsonTraversal {
public static void main(String[] args) throws IOException {
String jsonStr = "[{\"name\":\"张三\",\"age\":25},{\"name\":\"李四\",\"age\":30}]";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonArray = objectMapper.readTree(jsonStr);
// 遍历JsonNode数组
for (JsonNode node : jsonArray) {
System.out.println("姓名: " + node.get("name").asText() +
", 年龄: " + node.get("age").asInt());
}
}
}
使用Java 8 Stream API遍历JSON数组
结合Java 8的Stream API,可以写出更函数式的遍历代码:
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class StreamJsonTraversal {
public static void main(String[] args) {
String jsonStr = "[{\"name\":\"张三\",\"age\":25},{\"name\":\"李四\",\"age\":30}]";
Gson gson = new Gson();
JsonArray jsonArray = gson.fromJson(jsonStr, JsonArray.class);
// 使用Stream API遍历
IntStream.range(0, jsonArray.size())
.mapToObj(jsonArray::get)
.map(JsonElement::getAsJsonObject)
.forEach(jsonObject -> System.out.println(
"姓名: " + jsonObject.get("name").getAsString() +
", 年龄: " + jsonObject.get("age").getAsInt()
));
}
}
使用JSON-P (Java API for JSON Processing)遍历
JSON-P是Java EE标准的一部分,提供了一套标准的JSON处理API:
import javax.json.JsonArray;
import javax.json.JsonObject;
import javax.json.JsonReader;
import java.io.StringReader;
public class JsonPTraversal {
public static void main(String[] args) {
String jsonStr = "[{\"name\":\"张三\",\"age\":25},{\"name\":\"李四\",\"age\":30}]";
JsonReader jsonReader = Json.createReader(new StringReader(jsonStr));
JsonArray jsonArray = jsonReader.readArray();
// 遍历JsonArray
for (int i = 0; i < jsonArray.size(); i++) {
JsonObject jsonObject = jsonArray.getJsonObject(i);
System.out.println("姓名: " + jsonObject.getString("name") +
", 年龄: " + jsonObject.getInt("age"));
}
}
}
使用JSON-Parse库遍历JSON数组
JSON-Parse是一个轻量级的JSON解析器,特别适合简单场景:
import net.minidev.json.JSONArray;
import net.minidev.json.JSONObject;
public class JsonParseTraversal {
public static void main(String[] args) {
String jsonStr = "[{\"name\":\"张三\",\"age\":25},{\"name\":\"李四\",\"age\":30}]";
JSONArray jsonArray = (JSONArray) JSONValue.parse(jsonStr);
// 遍历JSONArray
for (Object obj : jsonArray) {
JSONObject jsonObject = (JSONObject) obj;
System.out.println("姓名: " + jsonObject.get("name") +
", 年龄: " + jsonObject.get("age"));
}
}
}
介绍了6种在Java中遍历JSON数组的方法,每种方法都有其特点和适用场景:
- org.json:轻量级,简单易用,适合小型项目
- Gson:Google出品,功能强大,与Java对象映射方便
- Jackson:高性能,功能全面,适合大型项目
- Java 8 Stream API:函数式风格,适合现代Java开发
- JSON-P:Java标准API,兼容性好
- JSON-Parse:极简轻量,适合简单需求
开发者可以根据项目需求、性能要求和个人偏好选择合适的JSON处理库,在实际开发中,Jackson和Gson是最常用的选择,而Stream API则为现代Java开发提供了更优雅的遍历方式。



还没有评论,来说两句吧...