List集合的对象传输的两种方式

说明:在一些特定的情况,我们需要把对象中的List集合属性存入到数据库中,之后把该字段取出来转为List集合的对象使用(如下图)

自定义对象

java 复制代码
public class User implements Serializable {

    /**
     * ID
     */
    private Integer id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 电话
     */
    private String phone;

}

即把自定义对象的List集合转为Json字符串,再转回List集合,本文介绍两种实现方式;

FastJson依赖

FastJson是阿里巴巴提供的将数据转为Json的一系列操作的工具,可以使用以下的两个方法实现

xml 复制代码
	<dependency>
	    <groupId>com.alibaba</groupId>
	    <artifactId>fastjson</artifactId>
	    <version>2.0.10</version>
	</dependency>
java 复制代码
        ArrayList<User> users = new ArrayList<>();
        users.add(new User(1,"root","123456","123456789"));
        users.add(new User(2,"admin","123456","123456789"));
        users.add(new User(3,"guest","123456","123456789"));

        System.out.println("List集合toString格式 = " + users);

        System.out.println("===========================================");

        // fastjson
        JSONArray jsonArray = JSONArray.parseArray(users.toString());
        System.out.println("jsonArray = " + jsonArray);

        System.out.println("===========================================");

        List<User> fastJsonList = jsonArray.toJavaList(User.class);
        System.out.println("fastJsonList.get(0) = " + fastJsonList.get(0));

使用这种方式,需要覆写User对象的toString()方法,如下:

java 复制代码
    @Override
    public String toString() {
        return "{" +
                "id:" + id +
                ", username:'" + username + '\'' +
                ", password:'" + password + '\'' +
                ", phone:'" + phone + '\'' +
                '}';
    }

执行程序,可以看到转换完成;

Hutool依赖

Hutool提供了各个方面的工具,可使用其中的JSONUtil实现目的,如下:

xml 复制代码
	<dependency>
	    <groupId>cn.hutool</groupId>
	    <artifactId>hutool-all</artifactId>
	    <version>5.8.6</version>
	</dependency>
java 复制代码
        ArrayList<User> users = new ArrayList<>();
        users.add(new User(1,"root","123456","123456789"));
        users.add(new User(2,"admin","123456","123456789"));
        users.add(new User(3,"guest","123456","123456789"));

        System.out.println("List集合toString格式 = " + users);

        System.out.println("===========================================");

        String jsonStr = JSONUtil.toJsonStr(users);
        System.out.println("jsonStr = " + jsonStr);

        System.out.println("===========================================");
        List<User> hutoolList = JSONUtil.toList(jsonStr, User.class);
        System.out.println("hutoolList.get(0) = " + hutoolList.get(0));

执行结果

总结

使用fastjson、hutool工具包都可以达到目的,建议使用hutool工具包,hutool提供了许多我们经常会使用到的一些操作,如生成token、数字格式转换、对象非空判断、数字加密等等,jsonUtil只是其中一个。

而且如果使用fastjson,还需要重写对象的toString()方法,较为麻烦。

相关推荐
码智社1 小时前
Java实现RSA密钥生成、加密解密、加签验签
java
wear工程师1 小时前
ThreadLocal 在线程池里为什么会串数据:别只会答内存泄漏
java·后端
Iruoyaoxh1 小时前
栈和队列~
java·开发语言
审小匠OpenCPAi1 小时前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
码上上班1 小时前
docker课程
java·docker·容器
腻害兔2 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:CRM 客户关系模块深度解析——从线索到回款,一套完整的 B2B 销售闭环是怎么搭的?
java·前端·javascript·vue.js·产品经理·ai编程
达子6662 小时前
第9章_HarmonyOs图解 用Java开发UI
java·ui·harmonyos
龙虾PRO4 小时前
能源与股票量化核心差异,AI全链路落地实操手册
java·面试·职场和发展
llwszx4 小时前
【Java/Go后端手撸原生Agent(第九篇):Plan-and-Execute规划模式——从“走一步看一步“到“先谋后动“】
java·python·golang·agent开发·plan模式·规划执行模式
ZJH__GO4 小时前
网络编程v2--多客户端互通
java·运维·服务器·开发语言·计算机网络