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

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-01-25 18:22
Next 2024-01-25 18:23

相关推荐

  • redis用string存储对象

    Redis可以使用序列化和反序列化技术来存储对象,常用的序列化方式有JSON、XML、MessagePack等。

    2024-05-20
    0108
  • JSON文件的打开方法及工具介绍

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,JSON文件通常用于存储和传输数据,例如在Web应用程序中,本文将介绍如何打开和处理JSON文件,以及一些常用的工具。1. 使用文本编辑器打开JSON文件大多数文本编辑器都支持打开和编辑JSON文件,在……

    2023-11-25
    0346
  • php怎么将string转为double浮点类型(php string转int)

    在PHP中,可以使用(double)或floatval()函数将字符串转换为双精度浮点数。

    2024-02-11
    0202
  • JAVA中resourcebundle使用的方法是什么

    什么是ResourceBundle?ResourceBundle是Java中用于国际化的一个类,它可以帮助我们在不同的语言环境下加载对应的资源文件,资源文件通常是以键值对的形式存储的,en_US.properties(美国英语)、zh_CN.properties(简体中文)等,通过使用ResourceBundle,我们可以方便地实现应……

    2024-01-12
    0126
  • Java的namevaluepair用法是什么

    Java的namevaluepair用法在Java中,我们可以使用NameValuePair类来处理HTTP请求中的键值对。NameValuePair类是Apache HttpComponents库的一部分,它提供了一种简单的方法来存储和操作HTTP请求参数,以下是一个简单的示例,演示了如何使用NameValuePair类:1、我们需……

    2024-01-15
    0124
  • Java截取字符串的方法有哪些

    Java中截取字符串的方法有很多,其中最常用的是substring()方法。还有StringUtils提供的toCharArray()和substring()方法,以及split()+正则表达式来进行截取 。

    2024-01-25
    0164

发表回复

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

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