Fastjson中SerializeFilter功能简介说明
下文笔者讲述fastjson中SerializeFilter功能简介说明,如下所示
调用 writeKeyValue 添加内容
例
调用 writeKeyValue 添加内容
SerializeFilter功能简介
SerializeFilter是通过编程扩展的方式定制序列化 fastjson支持6种SerializeFilter,用于不同场景的定制序列化,如下所示: PropertyPreFilter:使用PropertyName判断是否序列化 PropertyFilter:使用PropertyName和PropertyValue来判断是否序列化 NameFilter:修改Key,如果需要修改Key,process返回值则可 ValueFilter:修改Value BeforeFilter:序列化时在最前添加内容 AfterFilter:序列化时在最后添加内容
PropertyPreFilter使用PropertyName判断是否序列化
PropertyFilter不同只使用object和name进行判断,在调用getter之前,这样避免了getter调用可能存在的异常。 public interface PropertyPreFilter extends SerializeFilter { boolean apply(JSONSerializer serializer, Object object, String name); }
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
NameFilter 序列化时修改Key
当需要修改Key,process返回值则可 public interface NameFilter extends SerializeFilter { String process(Object object, String propertyName, Object propertyValue); }
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); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。