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() 方法将结果收集到一个新的列表中。
相关推荐
装不满的克莱因瓶19 分钟前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
n北斗27 分钟前
常用类晨考day15
java
骇客野人30 分钟前
【JAVA】JAVA接口公共返回体ResponseData封装
java·开发语言
yuanbenshidiaos2 小时前
c++---------数据类型
java·jvm·c++
向宇it2 小时前
【从零开始入门unity游戏开发之——C#篇25】C#面向对象动态多态——virtual、override 和 base 关键字、抽象类和抽象方法
java·开发语言·unity·c#·游戏引擎
Lojarro2 小时前
【Spring】Spring框架之-AOP
java·mysql·spring
莫名其妙小饼干2 小时前
网上球鞋竞拍系统|Java|SSM|VUE| 前后端分离
java·开发语言·maven·mssql
isolusion2 小时前
Springboot的创建方式
java·spring boot·后端
zjw_rp3 小时前
Spring-AOP
java·后端·spring·spring-aop
Oneforlove_twoforjob3 小时前
【Java基础面试题033】Java泛型的作用是什么?
java·开发语言