Array数组和List的序列化和反序列化

一、前言

数组类型对象和普通对象一样,使用toJson/fromJson即可完成序列化与反序列化。

二、Array数组的序列化和反序列化

1.创建User类

java 复制代码
public class User {
    @Expose
    private String userName;
    @Expose
    private String password;
    @Expose
    private int age;
    @Expose
    private boolean isStudent;
    @Expose
    private Job job;

    public String getUserName() {
        return userName;
    }

    public String getPassword() {
        return password;
    }

    public int getAge() {
        return age;
    }

    public boolean isStudent() {
        return isStudent;
    }

    public void setJob(Job job) {
        this.job = job;
    }

    public Job getJob() {
        return job;
    }

    public User(String userName, String password, int age, boolean isStudent) {
        this.userName = userName;
        this.password = password;
        this.age = age;
        this.isStudent = isStudent;
    }
}

2.创建Job类

java 复制代码
public class Job {
    private String name;
    private  int salary;

    public Job(String name, int salary) {
        this.name = name;
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "job{" +
                "name='" + name + '\'' +
                ", salary=" + salary +
                '}';
    }
}

3.Array数组序列化和反序列化代码实现

java 复制代码
public class ArrayListUnitTest {
    @Test
    public void testArray() {
        User[] user1 = new User[3];
        //创建java对象
        user1[0] = new User("Anglin1", "123", 18, false);
        user1[1] = new User("Anglin2", "123", 88, true);
        //创建Gson对象
        Gson gson = new Gson();

        //序列化
        String json = gson.toJson(user1);
        System.out.println("序列化:"+json);

        //反序列化
        User[] user2 = gson.fromJson(json, User[].class);
        System.out.println("反序列化0:"+user2[0]);
        System.out.println("反序列化1:"+user2[1]);
        System.out.println("反序列化2:"+user2[2]);
    }
}

4.运行结果

三、List集合的序列化和反序列化

1.在原来user类和job类的基础上实现List集合的序列化和反序列化

java 复制代码
public class ArrayListUnitTest {
 

    @Test
    public void testListObject() {
        List<User> list1 = new ArrayList<>();
        list1.add(new User("Anglin1","123",18,false));
        list1.add(new User("Anglin2","123",22,true));
        list1.add(null);

        //创建Gson提供的gson对象
        Gson gson = new Gson();
        //序列化
        String json = gson.toJson(list1);
        System.out.println(json);

        //反序列化
        Type type = new TypeToken<List<User>>(){
        }.getType();
        List<User> list2= gson.fromJson(json,type);
        System.out.println(list2.get(0));
        System.out.println(list2.get(1));
        System.out.println(list2.get(2));
    }
}

2.运行结果

相关推荐
anew___6 小时前
《从零手写操作系统 (29):管道与重定向进阶——命名管道、Here Document与Shell语法扩展》
java·开发语言·前端·javascript·网络
Mikko76 小时前
JVM 线上排查实战(六):JFR 怎么用?JDK 8 要不要加 UnlockCommercialFeatures、jfr 命令在哪、录的文件为什么读不了
java·运维·jvm·后端
jimy16 小时前
虚函数和 RTTI实现运行时多态
开发语言·c++
奇牙coding7 小时前
GPT-5.5 API 报 401 但 GPT-5.4 正常怎么办?不是 Key 失效,是 Organization 头的强制校验变了
java·网络·gpt·ai
一个有温度的技术博主7 小时前
凌晨两点的死锁:当线程“互相等死“
开发语言·后端·场景
a努力。7 小时前
Context-State-Memory三重信息架构揭秘
java·服务器·前端
Είναι η κοπέλα7 小时前
llama.cpp 与 GGUF 格式:本地大模型的“裸引擎“
开发语言·人工智能·pytorch·python·conda
captain3767 小时前
Maven
java·后端·idea
liangshanbo12157 小时前
主系统登录后,子系统怎么实现自动登录?
java·网络·数据库
大草原的小灰灰7 小时前
Python面向对象编程
开发语言·python