fastjson自定义序列化
来源:互联网 发布:客户达装修软件 编辑:程序博客网 时间:2024/05/17 14:26
简介
SerializeFilter是通过编程扩展的方式定制序列化。fastjson支持6种SerializeFilter,用于不同场景的定制序列化。
- PropertyPreFilter 根据PropertyName判断是否序列化
- PropertyFilter 根据PropertyName和PropertyValue来判断是否序列化
- NameFilter 修改Key,如果需要修改Key,process返回值则可
- ValueFilter 修改Value
- BeforeFilter 序列化时在最前添加内容
- AfterFilter 序列化时在最后添加内容
PropertyFilter 根据PropertyName和PropertyValue来判断是否序列化
public interface PropertyFilter extends SerializeFilter { boolean apply(Object object, String propertyName, Object propertyValue); }
可以通过扩展实现根据object或者属性名称或者属性值进行判断是否需要序列化。例如:
PropertyFilter filter = new PropertyFilter() { public boolean apply(Object source, String name, Object value) { if ("id".equals(name)) { int id = ((Integer) value).intValue(); return id >= 100; } return false; } }; JSON.toJSONString(obj, filter); // 序列化的时候传入filter
PropertyPreFilter 根据PropertyName判断是否序列化
和PropertyFilter不同只根据object和name进行判断,在调用getter之前,这样避免了getter调用可能存在的异常。
public interface PropertyPreFilter extends SerializeFilter { boolean apply(JSONSerializer serializer, Object object, String name); }
NameFilter 序列化时修改Key
如果需要修改Key,process返回值则可
public interface NameFilter extends SerializeFilter { String process(Object object, String propertyName, Object propertyValue);}
fastjson内置一个PascalNameFilter,用于输出将首字符大写的Pascal风格。 例如:
import com.alibaba.fastjson.serializer.PascalNameFilter;Object obj = ...;String jsonStr = JSON.toJSONString(obj, new PascalNameFilter());
ValueFilter 序列化是修改Value
public interface ValueFilter extends SerializeFilter { Object process(Object object, String propertyName, Object propertyValue); }
BeforeFilter 序列化时在最前添加内容
在序列化对象的所有属性之前执行某些操作,例如调用 writeKeyValue 添加内容
public abstract class BeforeFilter implements SerializeFilter { protected final void writeKeyValue(String key, Object value) { ... } // 需要实现的抽象方法,在实现中调用writeKeyValue添加内容 public abstract void writeBefore(Object object); }
AfterFilter 序列化时在最后添加内容
在序列化对象的所有属性之后执行某些操作,例如调用 writeKeyValue 添加内容
public abstract class AfterFilter implements SerializeFilter { protected final void writeKeyValue(String key, Object value) { ... } // 需要实现的抽象方法,在实现中调用writeKeyValue添加内容 public abstract void writeAfter(Object object); }
转载自:https://github.com/alibaba/fastjson/wiki/SerializeFilter
0 0
- fastjson自定义序列化
- FastJSON自定义序列化-修改属性值
- FastJson定制序列化
- fastJson序列化
- FastJson序列化问题
- fastjson使用(三) -- 序列化
- fastjson 序列化枚举问题
- 利用fastjson序列化对象
- FastJSON序列化的使用
- fastjson序列化日期格式化
- fastjson SerializerFeature序列化属性
- 关于fastjson序列化部分源码解析
- fastjson 过滤不需要序列化的属性
- fastjson 序列化 忽略 某个字段
- fastjson 序列化部分源码解析①
- fastjson 序列化部分源码解析②
- fastjson序列化时去掉null字段
- Fastjson的SerializerFeature序列化属性
- 生产Tomcat运行不稳定
- centos中子目录新生成文件或目录具有与父目录相同权限方法
- jQuery实现编辑修改表格table
- TCP和UDP概念
- DOCTYPE 声明的作用是什么? 严格模式与混杂模式如何区分?
- fastjson自定义序列化
- 对于GNU编译器中“-mthumb-interwork”和“-mthumb”的理解
- OpenWrt笔记---lua环境搭建
- linux挂载新硬盘
- iOS 打包后 Export 导出4 个选项的含义
- Mac 下使用Xcode 配置Lua 环境并使用
- java poi 生成excel双表头
- 欢迎使用CSDN-markdown编辑器
- spring aop拦截Controller做参数校验