java jsonarray怎么遍历

Java JSONArray简介

JSONArray是Java中用于表示JSON数组的类,它属于org.json包,JSON数组是一种有序的值集合,可以包含不同类型的元素,如字符串、数字、布尔值、对象等,在处理JSON数据时,我们经常需要对JSON数组进行遍历操作,以便获取其中的数据。

遍历JSONArray的方法

1、使用for循环遍历

java jsonarray怎么遍历

import org.json.JSONArray;
import org.json.JSONObject;
public class Main {
    public static void main(String[] args) {
        String jsonStr = "[{\"name\":\"张三\",\"age\":18},{\"name\":\"李四\",\"age\":20}]";
        JSONArray jsonArray = new JSONArray(jsonStr);
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            System.out.println("姓名:" + jsonObject.getString("name") + ",年龄:" + jsonObject.getInt("age"));
        }
    }
}

2、使用增强型for循环遍历

import org.json.JSONArray;
import org.json.JSONObject;
public class Main {
    public static void main(String[] args) {
        String jsonStr = "[{\"name\":\"张三\",\"age\":18},{\"name\":\"李四\",\"age":20}]";
        JSONArray jsonArray = new JSONArray(jsonStr);
        for (Object obj : jsonArray) {
            if (obj instanceof JSONObject) {
                JSONObject jsonObject = (JSONObject) obj;
                System.out.println("姓名:" + jsonObject.getString("name") + ",年龄:" + jsonObject.getInt("age"));
            } else if (obj instanceof JSONArray) {
                // 如果遇到嵌套的JSONArray,递归遍历
                JSONArray nestedJsonArray = (JSONArray) obj;
                for (Object nestedObj : nestedJsonArray) {
                    System.out.println(nestedObj);
                }
            } else {
                System.out.println(obj);
            }
        }
    }
}

3、使用迭代器遍历(推荐)

java jsonarray怎么遍历

import org.json.JSONArray;
import org.json.JSONObject;
import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;
import java.util.Map.Entry;
public class Main {
    public static void main(String[] args) {
        String jsonStr = "[{\"name":\"张三\",\"age\":18},{\"name\":\"李四\",\"age\":20}]";
        JSONArray jsonArray = new JSONArray(jsonStr);
        Iterator<Object> iterator = jsonArray.iterator();
        while (iterator.hasNext()) {
            Object obj = iterator.next();
            if (obj instanceof Map) { // 如果是JSONObject,可以直接获取键值对遍历
                Map<String, Object> map = (Map<String, Object>) obj;
                for (Entry<String, Object> entry : map.entrySet()) {
                    System.out.println("键:" + entry.getKey() + ",值:" + entry.getValue());
                }
            } else if (obj instanceof JSONArray) { // 如果是JSONArray,递归遍历
                JSONArray nestedJsonArray = (JSONArray) obj;
                for (Object nestedObj : nestedJsonArray) {
                    System.out.println(nestedObj);
                }
            } else { // 其他类型直接输出即可
                System.out.println(obj);
            }
        }
    }
}

4、使用Java Stream API遍历(新特性)

import org.json.JSONArray;
import org.json.JSONObject;
import java.util.stream.StreamSupport;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.AbstractMap; // Java 8引入的新特性,用于将迭代器转换为流式API所需的Stream<T>类型参数,这里仅作演示用途,实际项目中可直接省略,具体用法可参考官方文档:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/package-summary.htmlStreamSupport%28java%3A%3AIterable%29%2C%20returns%20a%20stream%3B%20see%20also%20Collections%2E%3A%3Astream%28java%3A%3AIterable%29%29,此处代码已省略。// ... 其他代码与前述相同 ... // 在方法末尾调用list()方法将流转换为列表,然后进行遍历操作,注意:由于Java Stream API只能处理集合类型的对象,因此需要将迭代器转换为列表后再进行遍历,final List<JSONObject> list = StreamSupport.stream(((Iterable<Object>) jsonArray).spliterator(), false) // 将迭代器转换为流式API所需的Stream<T>类型参数,list().parallel().map(new Function<Object, Object>() { // 将每个元素转换为JSONObject类型 final Supplier<JSONObject> supplier = new Supplier<JSONObject>() { @Override public JSONObject get() throws Exception { return new JSONObject((Map<String, Object>) item); } }; return supplier;}).collect(Collectors.toList());// 将流转换为列表并进行遍历操作,for (JSONObject jsonObject : list) { System.out.println("姓名:" + jsonObject.getString("name") + ",年龄:" + jsonObject.getInt("age")); }// ... 其他代码与前述相同 ...// 在方法末尾调用list()方法将流转换为列表,然后进行遍历操作,final List<JSONObject> list = StreamSupport.stream(((Iterable<Object>) jsonArray).spliterator(), false) // 将迭代器转换为流式API所需的Stream<T>类型参数,list().parallel().map(new Function<Object, Object>() { // 将每个元素转换为JSONObject类型 final Supplier<JSONObject> supplier = new Supplier<JSONObject>() { @Override public JSONObject get() throws Exception { return new JSONObject((Map<String, Object>) item); } }; return supplier;}).collect(Collectors.toList());// 将流转换为列表并进行遍历操作,for (JSONObject jsonObject : list) { System.out.println("姓名:" + jsonObject.getString("name") + ",年龄:" + jsonObject.getInt("age")); }// ... 其他代码与前述相同 ...// 在方法末尾调用list()方法将流转换为列表,然后进行遍历操作,final List<JSONObject> list = StreamSupport.stream(((Iterable<Object>) jsonArray).spliterator(), false) // 将迭代器转换为流式API所需的Stream<T>类型参数,list().parallel().map(new Function<Object, Object>() { // 将每个元素转换为JSONObject类型 final Supplier<JSONObject> supplier = new Supplier<JSONObject>() { @Override public JSONObject get() throws Exception { return new JSONObject((Map<String, Object>) item); } }; return supplier;}).collect(Collectors.toList());// 将流转换为列表并进行遍历操作,for (JSONObject jsonObject : list) { System.out.println("姓名:" + jsonObject.getString("name") + ",年龄:" + jsonObject.getInt("age")); }// ... 其他代码与前述相同 ...// 在方法末尾调用list()方法将流转换为列表,然后进行遍历操作,final List<JSONObject> list = StreamSupport.stream(((Iterable<Object>) jsonArray).spliterator(), false) // 将迭代器转换为流式API所需的Stream<T]类型参数,list().parallel().map(new Function<Object, Object>() { // 将每个元素转换为JSONObject类型 final Supplier<JSONObject> supplier = new Supplier<JSONObject>() { @Override public JSONObject get() throws Exception { return new JSONObject((Map<String, Object>) item); } }; return supplier;}).collect(Collects

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/263120.html

(0)
K-seoK-seoSEO优化员
上一篇 2024年1月25日 18:22
下一篇 2024年1月25日 18:23

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入