首页
ObjectMapper配置
- SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS:序列化时间戳带纳秒
 - DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS:反序列化时间戳带纳秒
 
Annotations
- @JsonInclude:类、属性、get方法注解,指定属性序列化的策略,包括:
    
- ALWAYS:缺省值,即固定序列化;
 - NON_NULL:null值不序列化;
 - NON_ABSENT:包含NON_NULL,Optional引用值为空也不序列化;
 - NON_EMPTY:包含NON_ABSENT,空集合空数组也不序列化;
 - NON_DEFAULT:保留默认值的属性不序列化。
 
 - 
    
@JsonAlias:属性注解,指定反序列化时属性的别名。
 - 
    
@JsonUnwrapped:扁平化对象,将对象拆分为属性。
 - 
    
@JsonAnyGetter:序列化时将map类型属性拆包作为普通属性。
 - 
    
@JsonAnySetter:反序列化时,使用一个map接受未知属性。
@Data public static class TestClass { @JsonAnyGetter Map<String, Object> map; @JsonAnySetter void wrap(String k, Object o) { if (this.map == null) { this.map = new HashMap<>(); } this.map.put(k, o); } } - 
    
@JsonAutoDetect:设置属性识别方式,一般通过配置ObjectMapper全局设置。
 - 
    
@JsonManagedReference、@JsonBackReference:用于解决父子循环依赖,@JsonBackReference标识的属性不会被序列化,但是反序列化时会自动创建循环依赖。
 - 
    
@JsonIdentityInfo:也可用于解决循环依赖,序列化时自动根据循环关系生成唯一标识,或者指定为已存在的属性,反序列化也会自动创建循环依赖。
 - 
    
@JsonCreator:指定反序列化调用方法,无改注解则默认为无参构造方法,可以指定为其他构造方法或静态工厂方法,方法参数使用@JsonProperty标识,否则作为整体传入。
 - 
    
@JsonValue:指定序列化的值,可以注解在方法和字段上。
 - 
    
@JsonRawValue:序列化时原样输出,适用于属性已经是一个JSON字符串的情况,不会加上转义符和多余的引号。
 - @JsonTypeInfo:用于多态场景(会有安全性问题)
    
- use:类型信息,JsonTypeInfo.Id枚举值
        
- NONE:无
 - CLASS、MINIMAL_CLASS、NAME:全限定类名,最小类型
 - Name:默认为类名,可@JsonSubTypes.Type或@JsonTypeName自定义
 - DEDUCTION:不输出类型信息,反序列化时按照属性匹配
 
 - include:类型信息输出方式,JsonTypeInfo.As枚举值
 - property:输出类型信息为属性时,指定属性名
 - @JsonSubTypes:标注在父类上,声明所有子类类型,值为@JsonSubTypes.Type数组
 - @JsonTypeName:标注在子类上,指定类型名称
 
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME) @JsonSubTypes({@JsonSubTypes.Type(value = A.class, name = "a"), @JsonSubTypes.Type(B.class)}) public static abstract class Base { } public static class A extends Base { String a; } @JsonTypeName("b") public static class B extends Base { Integer b; } - use:类型信息,JsonTypeInfo.Id枚举值
        
 - @JsonProperty
    
- value:指定序列化和反序列化的属性名
 - index:指定序列化的顺序
 - access:字段访问场景,READ_ONLY、WRITE_ONLY、READ_WRITE
 
 - 
    
@JsonPropertyOrder:类注解,指定属性排序
 - @JsonSerialize
    
- as:指定序列化的类型
 - typing:动态根据具体类型序列化,或静态按照声明类型序列化。
 
 - @JsonDeserialize
    
- as:指定反序列化的类型
 - builder:使用builder反序列化
 
 - @JsonPOJOBuilder:注解在builder上配合@JsonDeserialize.builder
 
JsonNode
- findPath(String fieldName):从整个树中查找指定属性,不存在则返回MissingNode,内部实现是调用findValue
 - findValue(String fieldName):从树中查找指定属性,不存在则返回null
 - findParent(String fieldName):从树中查找包含指定属性的JsonNode,不存在返回null
 - require():要求不能为MissingNode,返回自身。
 - with(String propertyName):如果不存在该属性则添加ObjectNode。
 - withArray(String propertyName):如果不存在该属性则添加ArrayNode。
 
ObjectNode
- fields():如果为ObjectNode,返回所有属性Entry
 - fieldNames():如果为ObjectNode,返回所有属性名
 - elements():如果为ObjectNode,返回所有属性的值
 - path(String fieldName):如果为ObjectNode,则查找属性,不存在返回MissingNode
 - get(String fieldName):如果为ObjectNode,则查找属性,不存在返回null
 - required(String fieldName):如果为ObjectNode,要求必须存在指定属性并返回
 
ArrayNode
- elements():如果为ArrayNode,返回所有元素
 - path(int index):如果为ArrayNode,返回索引为index的元素,不存在返回MissingNode
 - get(int index):如果为ArrayNode,返回索引为index的元素,不存在返回null
 - required(int index):如果为ArrayNode,要求必须存在索引为index的元素并返回