赞
踩
需求:通过HTTP方式对接三方系统的时候,本方业务系统传输字段或字段内部与第三方字段名不一值,需要过滤、转化等操作,希望通过注解的方式 + fastjson过滤器来简化实现业务需求。
首先要了解下SerializeFilter这个接口是通过编程扩展的方式定制序列化。
fastjson支持6种序列化方式,用于不同业务场景的定制化需求,都是基于SerializeFilter接口的封装。
- PropertyPreFilter 根据PropertyName判断字段是否序列化
- PropertyFilter 根据PropertyName和PropertyValue来判断是否序列化
- NameFilter 修改Key,如果需要修改Key,process返回值则可
- ValueFilter 修改Value
- BeforeFilter 序列化时在最前添加内容
- AfterFilter 序列化时在最后添加内容
案例:
业务表单需要传oa审批,oa表单字段少于业务表单并且字段名不一样,如果通过注解方式实现,过滤与转换字段名称。
第一步,自定义注解OaProperty
- import java.lang.annotation.*;
-
- @Target({ElementType.FIELD})
- @Retention(RetentionPolicy.RUNTIME)
- @Inherited
- public @interface OaProperty {
-
- /**oa字段名称*/
- String field() default "";
- }
第二,实现fastjson自定义过滤器,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。