
com.github.anonymousmister.bootfastconfig.expand.AnnotationJson Maven / Gradle / Ivy
package com.github.anonymousmister.bootfastconfig.expand;
import com.fasterxml.jackson.databind.BeanDescription;
import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.SerializationConfig;
import com.fasterxml.jackson.databind.deser.BeanDeserializerBuilder;
import com.fasterxml.jackson.databind.deser.SettableBeanProperty;
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
import java.lang.annotation.Annotation;
import java.util.List;
/**
* @author admin
* 通用的json 注解序列化处理器
*/
public interface AnnotationJson {
/**
* 返回Annotation 类型
*
* @return
*/
Class getAnnotationClass();
/**
* 处理方法
*
* @param object 对象
* @param name 字段名称
* @param value 字段值
* @param annotation 命中的annotation
* @return
*/
default Object serialization(Object object, String name, Object value, T annotation) {
return value;
}
/**
* Jackson 在反序列化会用到
*
* @param config
* @param beanDesc
* @param builder
* @param settableBeanProperty
* @param annotation
*/
default void updateBuilder(final DeserializationConfig config,
final BeanDescription beanDesc,
final BeanDeserializerBuilder builder,
final SettableBeanProperty settableBeanProperty, T annotation) {
}
/**
* Jackson 在序列化时用到
*
* @param config
* @param beanDesc
* @param beanProperties
* @param writer
* @param annotation
* @return
*/
default void changeProperties(final SerializationConfig config,
final BeanDescription beanDesc,
final List beanProperties,
final BeanPropertyWriter writer, T annotation) {
}
;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy