在Java中遍历JSONArray
在Java中遍历JSONArray有多种方法,以下是几种常见的实现方式:

使用org.json库
import org.json.JSONArray;
import org.json.JSONObject;
public class JsonArrayExample {
public static void main(String[] args) {
String jsonStr = "[{\"name\":\"Alice\",\"age\":25},{\"name\":\"Bob\",\"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("Name: " + jsonObject.getString("name"));
System.out.println("Age: " + jsonObject.getInt("age"));
}
// 方法2:使用增强for循环
for (Object obj : jsonArray) {
JSONObject jsonObject = (JSONObject) obj;
System.out.println("Name: " + jsonObject.getString("name"));
System.out.println("Age: " + jsonObject.getInt("age"));
}
}
}
使用Gson库
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class GsonJsonArrayExample {
public static void main(String[] args) {
String jsonStr = "[{\"name\":\"Alice\",\"age\":25},{\"name\":\"Bob\",\"age\":30}]";
JsonArray jsonArray = JsonParser.parseString(jsonStr).getAsJsonArray();
// 使用增强for循环
for (JsonElement element : jsonArray) {
JsonObject jsonObject = element.getAsJsonObject();
System.out.println("Name: " + jsonObject.get("name").getAsString());
System.out.println("Age: " + jsonObject.get("age").getAsInt());
}
}
}
使用Jackson库
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class JacksonJsonArrayExample {
public static void main(String[] args) throws IOException {
String jsonStr = "[{\"name\":\"Alice\",\"age\":25},{\"name\":\"Bob\",\"age\":30}]";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonArray = objectMapper.readTree(jsonStr);
// 使用for循环
for (int i = 0; i < jsonArray.size(); i++) {
JsonNode node = jsonArray.get(i);
System.out.println("Name: " + node.get("name").asText());
System.out.println("Age: " + node.get("age").asInt());
}
// 使用增强for循环
for (JsonNode node : jsonArray) {
System.out.println("Name: " + node.get("name").asText());
System.out.println("Age: " + node.get("age").asInt());
}
}
}
使用Java内置的javax.json API (Java EE)
import javax.json.JsonArray;
import javax.json.JsonObject;
import javax.json.JsonReader;
import java.io.StringReader;
public class JavaxJsonArrayExample {
public static void main(String[] args) {
String jsonStr = "[{\"name\":\"Alice\",\"age\":25},{\"name\":\"Bob\",\"age\":30}]";
try (JsonReader reader = Json.createReader(new StringReader(jsonStr))) {
JsonArray jsonArray = reader.readArray();
// 使用增强for循环
for (JsonObject jsonObject : jsonArray.getValuesAs(JsonObject.class)) {
System.out.println("Name: " + jsonObject.getString("name"));
System.out.println("Age: " + jsonObject.getInt("age"));
}
}
}
}
注意事项
-
根据你的项目需求选择合适的JSON库:
- org.json:轻量级,API简单
- Gson:Google出品,功能强大
- Jackson:高性能,广泛使用
- javax.json:Java EE内置
-
处理JSON时要考虑异常情况,如:
- 键不存在时的处理
- 类型不匹配时的处理
- 空值处理
-
在Java 9及以上版本,可以考虑使用新的
javax.jsonAPI(需要单独引入依赖)
选择哪种方法取决于你的项目需求和已使用的JSON库。


