当前位置: 首页 > 工具软件 > JsonSerialize > 使用案例 >

jackson使用@JsonDeserialize与@JsonSerialize控制序列化与反序列化使用的实际类型

麻和雅
2023-12-01

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;

 
 类似资料: