杰瑞科技汇

Java遍历JSONArray有哪些常用方法?

Java遍历JSONArray的方法

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

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

使用org.json库

import org.json.JSONArray;
import org.json.JSONObject;
public class JsonArrayTraversal {
    public static void main(String[] args) {
        String jsonStr = "[{\"name\":\"John\", \"age\":30}, {\"name\":\"Alice\", \"age\":25}]";
        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 GsonJsonArrayTraversal {
    public static void main(String[] args) {
        String jsonStr = "[{\"name\":\"John\", \"age\":30}, {\"name\":\"Alice\", \"age\":25}]";
        JsonArray jsonArray = JsonParser.parseString(jsonStr).getAsJsonArray();
        // 方法1:使用迭代器
        for (JsonElement element : jsonArray) {
            JsonObject jsonObject = element.getAsJsonObject();
            System.out.println("Name: " + jsonObject.get("name").getAsString());
            System.out.println("Age: " + jsonObject.get("age").getAsInt());
        }
        // 方法2:使用传统for循环
        for (int i = 0; i < jsonArray.size(); i++) {
            JsonObject jsonObject = jsonArray.get(i).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.util.Iterator;
public class JacksonJsonArrayTraversal {
    public static void main(String[] args) throws Exception {
        String jsonStr = "[{\"name\":\"John\", \"age\":30}, {\"name\":\"Alice\", \"age\":25}]";
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonArray = objectMapper.readTree(jsonStr);
        // 方法1:使用迭代器
        for (JsonNode node : jsonArray) {
            System.out.println("Name: " + node.get("name").asText());
            System.out.println("Age: " + node.get("age").asInt());
        }
        // 方法2:使用传统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());
        }
    }
}

使用Java 8 Stream API(适用于Jackson或Gson)

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.stream.StreamSupport;
public class StreamJsonArrayTraversal {
    public static void main(String[] args) throws Exception {
        String jsonStr = "[{\"name\":\"John\", \"age\":30}, {\"name\":\"Alice\", \"age\":25}]";
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonArray = objectMapper.readTree(jsonStr);
        StreamSupport.stream(jsonArray.spliterator(), false)
            .forEach(node -> {
                System.out.println("Name: " + node.get("name").asText());
                System.out.println("Age: " + node.get("age").asInt());
            });
    }
}

注意事项

  1. 异常处理:在实际应用中,应该添加适当的异常处理来处理JSON解析错误或字段缺失的情况
  2. 性能考虑:对于大型JSON数组,考虑使用流式处理或分块处理
  3. 库选择:根据项目需求选择合适的JSON库(org.json、Gson、Jackson等)
  4. 类型安全:在遍历过程中确保类型转换的正确性

方法可以根据你的具体需求和项目使用的JSON库来选择最适合的实现方式。

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