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

相关推荐
消失的旧时光-19434 分钟前
ScheduledExecutorService
android·java·开发语言
勇闯逆流河5 分钟前
【C++】用红黑树封装map与set
java·开发语言·数据结构·c++
SpiderPex26 分钟前
论MyBatis和JPA权威性
java·mybatis
小猪咪piggy42 分钟前
【微服务】(1) Spring Cloud 概述
java·spring cloud·微服务
lkbhua莱克瓦2444 分钟前
Java基础——面向对象进阶复习知识点8
java·笔记·github·学习方法
m0_736927041 小时前
Spring Boot自动配置与“约定大于配置“机制详解
java·开发语言·后端·spring
GL-Yang2 小时前
2025年-集合类面试题
java·面试
你不是我我2 小时前
【Java 开发日记】我们来说一说 Redisson 的原理
java·开发语言
李憨憨2 小时前
Java处理大型 Excel 文件(超过 100 万行)难题
java
老K的Java兵器库2 小时前
Collections 工具类 15 个常用方法源码:sort、binarySearch、reverse、shuffle、unmodifiableXxx
java·开发语言·哈希算法