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()方法,较为麻烦。

相关推荐
qqxhb5 小时前
11|结构化输出:为什么 JSON 能让系统更稳定
json·ai编程·结构化·规范模板
大阿明5 小时前
Spring Boot(快速上手)
java·spring boot·后端
bearpping6 小时前
Java进阶,时间与日期,包装类,正则表达式
java
邵奈一6 小时前
清明纪念·时光信笺——项目运行指南
java·实战·项目
sunwenjian8866 小时前
Java进阶——IO 流
java·开发语言·python
sinat_255487816 小时前
读者、作家 Java集合学习笔记
java·笔记·学习
皮皮林5516 小时前
如何画出一张优秀的架构图?(老鸟必备)
java
百锦再6 小时前
Java 并发编程进阶,从线程池、锁、AQS 到并发容器与性能调优全解析
java·开发语言·jvm·spring·kafka·tomcat·maven
森林猿7 小时前
java-modbus-读取-modbus4j
java·网络·python
tobias.b7 小时前
计算机基础知识-数据结构
java·数据结构·考研