java序列化对象,根据不同配置动态改变属性名
使用场景:自己项目对接多个外部系统,各个外部系统使用的字段并没有统一,所以要根据不同系统动态的输出序列化数据,使适应各个系统的要求
实现方式
使用自定义注解和fastjson实现需求
fastjson的NameFilter的作用:序列化时,属性名变成自己指定的名称
实现过程
自定义注解一:MyParamName
package xin.yangshuai.cipher.json;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* MyParamName
*
* @author shuai
* @date 2021/3/23
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface MyParamName {
String value() default "";
NameEle[] names() default {};
}
value、names都是非必填
value:默认序列化的名称
names:自定义注解二,数组形式