杰瑞科技汇

Java 遍历 JSONArray 的方法有哪些?

在Java中遍历JSONArray

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

Java 遍历 JSONArray 的方法有哪些?-图1
(图片来源网络,侵删)

使用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"));
            }
        }
    }
}

注意事项

  1. 根据你的项目需求选择合适的JSON库:

    • org.json:轻量级,API简单
    • Gson:Google出品,功能强大
    • Jackson:高性能,广泛使用
    • javax.json:Java EE内置
  2. 处理JSON时要考虑异常情况,如:

    • 键不存在时的处理
    • 类型不匹配时的处理
    • 空值处理
  3. 在Java 9及以上版本,可以考虑使用新的javax.jsonAPI(需要单独引入依赖)

选择哪种方法取决于你的项目需求和已使用的JSON库。

Java 遍历 JSONArray 的方法有哪些?-图2
(图片来源网络,侵删)
Java 遍历 JSONArray 的方法有哪些?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇