1.简介
默认情况下,序列化时会获取对象的实际类型,然后根据可见性规则,获取对象以及其父类的所有属性进行序列化
默认情况下,反序列化时,如果使用的对象类型、属性类型不是最终类型,而是接口或者抽象类型,如Map接口等,此时jackson会
选择一种常用的实现类来进行反序列化,如Map->HashMap,List->ArrayList,Set->HashSet等
如果在序列化时只想序列化对象某父级类型的属性,反序列化时希望指定接口或者抽象类型的实现类,jackson提供了以下注解:
JsonDeserialize:通过as属性控制反序列化后最终的实现类
JsonSerialize:通过as属性控制序列化时使用的实际父类
2.JsonDeserialize
2.1 实体
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
@Data
public class User {
private Integer id;
/* 指定反序列化使用的实际类型 */
@JsonDeserialize(as = TreeMap.class)
private Map<String,String> info1;