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() 方法将结果收集到一个新的列表中。
相关推荐
韩立学长1 小时前
【开题答辩实录分享】以《自助游网站的设计与实现》为例进行选题答辩实录分享
java·mysql·spring
ss2731 小时前
线程池:任务队列、工作线程与生命周期管理
java·后端
不像程序员的程序媛1 小时前
Spring的cacheEvict
java·后端·spring
SAP小崔说事儿1 小时前
在数据库中将字符串拆分成表单(SQL和HANA版本)
java·数据库·sql·sap·hana·字符串拆分·无锡sap
凌云若寒1 小时前
半导体代加工企业标签模板痛点的全景式解决方案
java
shoubepatien2 小时前
JAVA -- 11
java·后端·intellij-idea
利剑 -~2 小时前
jdk源码解析
java·开发语言
Predestination王瀞潞2 小时前
JDK安装及环境变量配置
java·linux·开发语言
谷哥的小弟2 小时前
Spring Framework源码解析——PropertiesLoaderUtils
java·后端·spring·框架·源码
JIngJaneIL3 小时前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端