java List<Map<String, Object>> 转 List<JSONObject> 的几种方式

目录

方法一:使用传统循环

[方法二:使用 Java 8 的流(Stream)API](#方法二:使用 Java 8 的流(Stream)API)

[方法三:使用 Guava 库](#方法三:使用 Guava 库)

总结


List<Map<String, Object>> 转换为 List<JSONObject> 有多种方法。以下是几种常见的方法,包括使用传统的循环、Java 8 的流(Stream)API 和 Guava 库。

方法一:使用传统循环

复制代码
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        // 创建一个示例 List<Map<String, Object>>
        List<Map<String, Object>> originalList = new ArrayList<>();

        Map<String, Object> map1 = new HashMap<>();
        map1.put("name", "John Doe");
        map1.put("age", 30);
        map1.put("isStudent", false);

        Map<String, Object> map2 = new HashMap<>();
        map2.put("name", "Jane Doe");
        map2.put("age", 25);
        map2.put("isStudent", true);

        originalList.add(map1);
        originalList.add(map2);

        // 使用传统循环转换为 List<JSONObject>
        List<JSONObject> convertedList = new ArrayList<>();
        for (Map<String, Object> map : originalList) {
            convertedList.add(new JSONObject(map));
        }

        // 打印结果
        for (JSONObject json : convertedList) {
            System.out.println(json.toString());
        }
    }
}

方法二:使用 Java 8 的流(Stream)API

复制代码
import org.json.JSONObject;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        // 创建一个示例 List<Map<String, Object>>
        List<Map<String, Object>> originalList = new ArrayList<>();

        Map<String, Object> map1 = new HashMap<>();
        map1.put("name", "John Doe");
        map1.put("age", 30);
        map1.put("isStudent", false);

        Map<String, Object> map2 = new HashMap<>();
        map2.put("name", "Jane Doe");
        map2.put("age", 25);
        map2.put("isStudent", true);

        originalList.add(map1);
        originalList.add(map2);

        // 使用 Stream API 转换为 List<JSONObject>
        List<JSONObject> convertedList = originalList.stream()
                .map(JSONObject::new)
                .collect(Collectors.toList());

        // 打印结果
        for (JSONObject json : convertedList) {
            System.out.println(json.toString());
        }
    }
}

方法三:使用 Guava 库

如果你已经在项目中使用了 Guava 库,可以利用 FluentIterableFunctions 来简化转换过程。

首先,确保你已经添加了 Guava 库的依赖。如果你使用的是 Maven,可以在 pom.xml 中添加以下依赖:

复制代码
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>

然后,使用 Guava 进行转换:

复制代码
import com.google.common.collect.FluentIterable;
import com.google.common.base.Functions;
import org.json.JSONObject;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        // 创建一个示例 List<Map<String, Object>>
        List<Map<String, Object>> originalList = new ArrayList<>();

        Map<String, Object> map1 = new HashMap<>();
        map1.put("name", "John Doe");
        map1.put("age", 30);
        map1.put("isStudent", false);

        Map<String, Object> map2 = new HashMap<>();
        map2.put("name", "Jane Doe");
        map2.put("age", 25);
        map2.put("isStudent", true);

        originalList.add(map1);
        originalList.add(map2);

        // 使用 Guava 转换为 List<JSONObject>
        List<JSONObject> convertedList = FluentIterable.from(originalList)
                .transform(Functions.<Map<String, Object>>identity().compose(JSONObject::new))
                .toList();

        // 打印结果
        for (JSONObject json : convertedList) {
            System.out.println(json.toString());
        }
    }
}

总结

  1. 方法一:使用传统循环

    • 创建一个空的 List<JSONObject>
    • 遍历 List<Map<String, Object>>,将每个 Map 转换为 JSONObject 并添加到新的列表中。
  2. 方法二:使用 Java 8 的流(Stream)API

    • 使用 stream() 方法创建一个流。
    • 使用 map(JSONObject::new) 将每个 Map 转换为 JSONObject
    • 使用 collect(Collectors.toList()) 将流中的元素收集到一个新的列表中。
  3. 方法三:使用 Guava 库

    • 使用 FluentIterable.from(originalList) 创建一个可变的迭代器。
    • 使用 transform 方法将每个 Map 转换为 JSONObject
    • 使用 toList() 方法将结果收集到一个新的列表中。
相关推荐
你曾经是少年4 分钟前
Java 关键字
java
海南java第二人7 分钟前
SpringBoot启动流程深度解析:从入口到容器就绪的完整机制
java·开发语言
问今域中9 分钟前
Spring Boot 请求参数绑定注解
java·spring boot·后端
星火开发设计11 分钟前
C++ queue 全面解析与实战指南
java·开发语言·数据结构·c++·学习·知识·队列
rgeshfgreh12 分钟前
Java+GeoTools+PostGIS高效求解对跖点
java
鱼跃鹰飞14 分钟前
DDD中的防腐层
java·设计模式·架构
计算机程序设计小李同学16 分钟前
婚纱摄影集成管理系统小程序
java·vue.js·spring boot·后端·微信小程序·小程序
栈与堆1 小时前
LeetCode 19 - 删除链表的倒数第N个节点
java·开发语言·数据结构·python·算法·leetcode·链表
一路向北·重庆分伦1 小时前
03-01:MQ常见问题梳理
java·开发语言
一 乐1 小时前
绿色农产品销售|基于springboot + vue绿色农产品销售系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·宠物