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 2022/7/2 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface MyParamName
{
String value() default “”;
NameEle[] names() default {};
}
value、names都是非必填
value:默认序列化的名称
names:自定义注解二,数组形式
自定义注解二:NameEle
package xin.yangshua