1. 程式人生 > >jackson序列化與反序列化的應用實踐

jackson序列化與反序列化的應用實踐

# jackson序列化與反序列化的應用實踐 原始碼地址: https://github.com/zhouweixin/serializable ## 1 相關概念 1. 序列化: 把物件轉換為位元組序列的過程稱為物件的序列化 2. 反序列化: 把位元組序列恢復為物件的過程稱為物件的反序列化 ## 2 序列化的作用 1. 用於把記憶體中的物件狀態儲存到一個檔案中或者資料庫中 2. 用於網路傳送物件 3. 用於遠端呼叫傳輸物件 ## 3 準備序列化物件 準備了兩個類, 教師類和學生類, 其中一個學生只有一個教師 這裡省略了構造方法和setter, getter方法 Teacher.java ```java public class Teacher { private String name; private Integer age; } ``` Student.java ```java package org.zwx; public class Student { private String name; private Integer age; private Sex sex; private String fatherName; private Date bornTime; private Teacher teacher; } ``` Sex.java ```java public enum Sex { MALE("男"), FEMALE("女"); private String name; Sex(String name) { this.name = name; } public String getName() { return name; } } ``` ## 4 引入jackson依賴 本示例是基於gradle的, 從maven中心倉庫中選擇了2.11.2版本的jackson-databind ``` compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.2' ``` ## 5 序列化與格式化輸出 ### 5.1 流程 1. 首先需要有一個待序列化物件, 本例中的student物件 2. 建立一個物件對映器, jackson包下的ObjectMapper 3. 呼叫序列化函式, 本例中的writeValueAsString, 將物件轉為字串, 便於展示 ### 5.2 程式碼 ```java public void testSerializable() throws IOException { Student student1 = new Student("小明", 18, Sex.MALE, "王富貴", new Date(), new Teacher("李老師", 40)); Student student2 = new Student("小花", 16, Sex.FEMALE, "錢很多", new Date(), new Teacher("趙老師", 38));