一、简介
FastJson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
二、序列化API
序列化 : 是指将Java对象转成json格式字符串的过程.JavaBean对象,List集合对象,Map集合,为应用最广泛的
JSON.toJSONString(students)
:可以支持对象,集合,map多种数据类型。
// 序列化对象 转 String
String objString = JSON.toJSONString(student);
// 序列化list 转 String
String listString = JSON.toJSONString(list);
// 序列化map 转 String
String mapString = JSON.toJSONString(map);
三、反序列化API
反序列化就是string转对象,集合,map等
// String 转 对象
Student student = JSON.parseObject(objString, Student.class);
// String 转 list
List<Student> students = JSON.parseArray(listString, Student.class);
// String 转 map
Map<String, String> map = JSON.parseObject(mapString, new TypeReference<Map<String, String>>() {});
四、@JSonField注解
该注解作用于方法上,字段上和参数上.可在序列化和反序列化时进行特性功能定制
- 注解属性 :
name
序列化后的名字 - 注解属性 :
ordinal
序列化后的顺序 - 注解属性 :
format
序列化后的格式 - 注解属性 :
serialize
是否序列化该字段 - 注解属性 :
deserialize
是否反序列化该字段 - 注解属性 :
serialzeFeatures
序列化时的特性定义(等同于SerializerFeature枚举) - 注解属性:
label
给属性打上标签, 相当于给属性进行了分组 - 注解属性:
serializeUsing
设置属性的序列化类 - 注解属性:
deserializeUsing
设置属性的反序列化类
举个例子:
@Data
public class Student {
// name 序列化后的名字
@JSONField(name = "myName")
private String name;
// ordinal序列化后的顺序
@JSONField(ordinal = 2)
private Integer age;
// ordinal序列化后的顺序
@JSONField(ordinal = 1)
private String address;
// serialize 是否序列化该字段
@JSONField(serialize = false)
private String email;
// deserialize 是否反序列化该字段
@JSONField(deserialize = false)
private Boolean isBoolean;
// 序列化时的特性定义
@JSONField(serialzeFeatures = {SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.PrettyFormat})
private String desc;
// format 序列化后的格式
@JSONField(format = "YYYY-MM-dd")
private Date date;
}