JSON 是一种轻量级的数据格式。客户端和服务器之间传输的数据就是采用 JSON 的格式进行传输
2. FastJson 的概述FastJson 是阿里巴巴的开源 JSON 解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 Java Bean
FastJson 优点:
速度快使用广泛功能完备使用简单 3. 引入 FastJson 的依赖
4. FastJson 的序列化com.alibaba fastjson1.2.78
序列化:是指将 Java 对象转化成 json 格式字符串的过程。JavaBean 对象、List 集合对象、Map 集合,为应用最广泛的
(1) 创建一个测试实体类package com.peng.domain; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; @Data @AllArgsConstructor @NoArgsConstructor public class Student { private Integer id; private String name; private Integer age; private String email; private Date birth; }(2) Java 对象序列化为 Json 格式字符串
package com.peng.test; import com.alibaba.fastjson.JSON; import com.peng.domain.Student; import java.util.Date; public class demo { public static void main(String[] args) { Student student = new Student(1, "张三", 20, "[email protected]", new Date()); // 将 Student 对象转化为 JSON 格式的字符串 String jsonString = JSON.toJSONString(student); System.out.println(jsonString); // {"age":20,"birth":1643528834792,"email":"[email protected]","id":1,"name":"张三"} } }(3) List 集合序列化为 Json 字符串
package com.peng.test; import com.alibaba.fastjson.JSON; import com.peng.domain.Student; import java.util.ArrayList; import java.util.Date; import java.util.List; public class demo { public static void main(String[] args) { List(4) Map 集合序列化为 Json 字符串list = new ArrayList<>(); list.add(new Student(1, "张三", 20, "[email protected]", new Date())); list.add(new Student(2, "李四", 18, "[email protected]", new Date())); // 将 List 集合序列化为 JSON 格式的字符串 String jsonString = JSON.toJSONString(list); // 转后的结果是数组,数组的元素是对象 System.out.println(jsonString); // [{"age":20,"birth":1643530026118,"email":"[email protected]","id":1,"name":"张三"},{"age":18,"birth":1643530026118,"email":"[email protected]","id":2,"name":"李四"}] } }
package com.peng.test; import com.alibaba.fastjson.JSON; import com.peng.domain.Student; import java.util.Date; import java.util.HashMap; import java.util.Map; public class demo { public static void main(String[] args) { Mapmap = new HashMap<>(); map.put("student1", new Student(1, "张三", 20, "[email protected]", new Date())); map.put("student2", new Student(2, "李四", 18, "[email protected]", new Date())); String jsonString = JSON.toJSONString(map); // map 集合转化后的结果仍然是对象 System.out.println(jsonString); // {"student2":{"age":18,"birth":1643530736537,"email":"[email protected]","id":2,"name":"李四"},"student1":{"age":20,"birth":1643530736537,"email":"[email protected]","id":1,"name":"张三"}} } }
5. FastJson 的反序列化对象和 Map 集合转化后的 json 格式还是对象,List 集合转化后的 json 格式是数组
反序列化:把 json 格式的字符串转化成 Java 对象
(1) json 格式字符串反序列化为 Java 对象package com.peng.test; import com.alibaba.fastjson.JSON; import com.peng.domain.Student; public class demo { public static void main(String[] args) { String jsonString = "{"age":20,"birth":1643528834792,"email":"[email protected]","id":1,"name":"张三"}"; // 参数1:反序列化的 json 字符串;参数2:Java 对象的 class 对象 Student student = JSON.parseObject(jsonString, Student.class); System.out.println(student); } }(2) json 字符串反序列化为 List 集合
package com.peng.test; import com.alibaba.fastjson.JSON; import com.peng.domain.Student; import java.util.List; public class demo { public static void main(String[] args) { String jsonString = "[{"age":20,"birth":1643530026118,"email":"[email protected]","id":1,"name":"张三"},{"age":18,"birth":1643530026118,"email":"[email protected]","id":2,"name":"李四"}]"; // 参数1:反序列化的 json 字符串;参数2:转换后集合的泛型的 class 对象 List(3) json 字符串反序列化为 Map 集合list = JSON.parseArray(jsonString, Student.class); System.out.println(list); } }
package com.peng.test; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.peng.domain.Student; import java.util.Map; public class demo { public static void main(String[] args) { String jsonString = "{"student2":{"age":18,"birth":1643530736537,"email":"[email protected]","id":2,"name":"李四"},"student1":{"age":20,"birth":1643530736537,"email":"[email protected]","id":1,"name":"张三"}}"; // 参数1:反序列化的 json 字符串;参数2:TypeReference 类型,在泛型中写转换后的 Map 集合 Map6. @JsonType 注解map = JSON.parseObject(jsonString, new TypeReference
只能作用在实体类上,对类的字段进行序列化和反序列化时的特性功能的定制
package com.peng.domain; import com.alibaba.fastjson.annotation.JSONType; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; @Data @AllArgsConstructor @NoArgsConstructor @JSONType(includes = {"id", "name", "age", "birth"}, orders = {"name", "age", "id", "birth"}) public class Student { private Integer id; private String name; private Integer age; private String email; private Date birth; }7. @JsonField 注解
一般作用在实体类的属性上,可在序列化和反序列化时进行特性功能的定制
package com.peng.domain; import com.alibaba.fastjson.annotation.JSONField; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; @Data @AllArgsConstructor @NoArgsConstructor public class Student { private Integer id; @JSONField(name = "studentName") private String name; private Integer age; @JSONField(serialize = false) private String email; @JSONField(format = "yyyy-MM-dd HH:mm:ss") private Date birth; }8. spring boot 与 FastJson
spring boot默认的序列化方式是 jackson。我们如果想切换成 FastJson,需要配置一下
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)