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

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

在这里插入图片描述

自定义对象

public class User implements Serializable {

    /**
     * ID
     */
    private Integer id;

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

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

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

}

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

FastJson依赖

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

	<dependency>
	    <groupId>com.alibabagroupId>
	    <artifactId>fastjsonartifactId>
	    <version>2.0.10version>
	dependency>
        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()方法,如下:

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

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

List集合的对象传输的两种方式_第1张图片

Hutool依赖

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

	<dependency>
	    <groupId>cn.hutoolgroupId>
	    <artifactId>hutool-allartifactId>
	    <version>5.8.6version>
	dependency>
        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));

执行结果

List集合的对象传输的两种方式_第2张图片

总结

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

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

你可能感兴趣的:(list,json,java)