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

相关推荐

  • 如何判断浏览器的类型,java判断浏览器类型

    一、浏览器类型的判断在Java中,可以通过分析用户代理(User-Agent)字符串来判断浏览器的类型,用户代理字符串是HTTP请求头中的一个字段,它包含了关于客户端(如浏览器)的信息,通过解析这个字符串,我们可以获取浏览器的名称、版本、操作系统等信息,从而判断浏览器的类型。以下是一个简单的Java方法,用于判断浏览器类型:publi……

    2023-12-12
    0129
  • 浅谈Java中replace与replaceAll区别

    String str = "I like apple and banana.";str = str.replaceAll; // 将"apple"和"banana"替换为"orange". System.out.println; // 输出:I like orange and orange.

    2023-12-17
    0271
  • java如何输出文本所有内容的数据

    Java中,使用System.out.println()或PrintWriter类可输出文本内容。

    2024-01-23
    0184
  • profilestring函数怎么使用

    在编程中,profilestring函数是一种用于生成描述性字符串的函数,它通常用于调试和日志记录,以帮助开发人员了解程序的运行情况,本文将详细介绍profilestring函数的使用方法、注意事项以及一些实际应用案例。1、profilestring函数简介profilestring函数是Python标准库中的一个辅助函数,它的主要作……

    2023-12-26
    0112
  • java登录界面密码怎么设置加密和隐藏

    Java登录界面密码怎么设置加密和隐藏1、密码加密在Java中,可以使用MessageDigest类来实现密码的加密,MessageDigest类提供了一种将数据转换为散列值的方法,这种散列值通常用于验证数据的完整性和一致性,以下是一个使用MessageDigest类对密码进行加密的示例:import java.security.Me……

    2024-02-15
    0107
  • java如何获取Object对象的值

    在Java编程语言中,获取Object对象的值是相对直接的过程,因为所有的类都继承自Object类,所以我们可以直接通过.操作符来访问其属性或方法,下面我将详细解释这个过程。基本概念1、Object类:在Java中,所有的类都直接或间接地继承自Object类,这就意味着,任何对象都可以被视为Object类型的对象,Object类提供了……

    2024-01-17
    0269

发表回复

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

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