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

相关推荐
上不如老下不如小5 分钟前
2025年第七届全国高校计算机能力挑战赛初赛 Java组 编程题汇总
java·计算机能力挑战赛
泉城老铁20 分钟前
Springboot对接mqtt
java·spring boot·后端
源码_V_saaskw24 分钟前
JAVA国际版同城跑腿源码快递代取帮买帮送同城服务源码支持Android+IOS+H5
android·java·ios·微信小程序
TT哇29 分钟前
消息推送机制——WebSocket
java·网络·websocket·网络协议
镜花水月linyi43 分钟前
ConcurrentHashMap 深入解析:从0到1彻底掌握(1.3万字)
java·后端
极客Bob44 分钟前
Java 集合操作完整清单(Java 8+ Stream API)
java
雨中飘荡的记忆44 分钟前
Javassist实战指南
java
Knight_AL1 小时前
JWT 无状态认证深度解析:原理、优势
java·jwt
寒山李白1 小时前
IDEA中如何配置Java类注释(Java类注释信息配置,如作者、备注、时间等)
java
我要添砖java1 小时前
<JAVAEE> 多线程4-wait和notify方法
android·java·java-ee