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


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

    在这里插入图片描述

    自定义对象

    public class User implements Serializable {
    
        /**
         * ID
         */
        private Integer id;
    
        /**
         * 用户名
         */
        private String username;
    
        /**
         * 密码
         */
        private String password;
    
        /**
         * 电话
         */
        private String phone;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

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

    FastJson依赖

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

    	<dependency>
    	    <groupId>com.alibabagroupId>
    	    <artifactId>fastjsonartifactId>
    	    <version>2.0.10version>
    	dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
            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));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

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

        @Override
        public String toString() {
            return "{" +
                    "id:" + id +
                    ", username:'" + username + '\'' +
                    ", password:'" + password + '\'' +
                    ", phone:'" + phone + '\'' +
                    '}';
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    在这里插入图片描述

    Hutool依赖

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

    	<dependency>
    	    <groupId>cn.hutoolgroupId>
    	    <artifactId>hutool-allartifactId>
    	    <version>5.8.6version>
    	dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
            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));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    执行结果

    在这里插入图片描述

    总结

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

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

  • 相关阅读:
    HLS学习1:点灯
    字符串与内存操作函数详解与模拟实现
    计算机毕业设计Java山西工艺美术馆(源码+系统+mysql数据库+lw文档)
    java 常见api Arrays类
    运算符【Java基础】
    DataCube 漏洞小结
    网络编程:网络编程基础
    python3GUI--仿做一个网易云音乐(第三弹v2.0)By:PyQt5(附下载地址)
    HTML制作五子棋
    leetcode 90 子集II
  • 原文地址:https://blog.csdn.net/qq_42108331/article/details/132077704