Fastjson API SerializeFilter
Fastjson API SerializeFilter 소개
SerializeFilter는 프로그래밍 방식 확장을 통한 맞춤형 직렬화입니다. fastjson은 다양한 시나리오에서 사용자 정의된 직렬화를 위해 6가지 유형의 SerializeFilter를 지원합니다.
- PropertyPreFilter는 PropertyName을 기준으로 직렬화 여부를 결정합니다.
- PropertyFilter는 PropertyName 및 PropertyValue를 기준으로 직렬화 여부를 결정합니다.
- NameFilter는 키를 수정합니다. 키를 수정하고 반환 값을 처리해야 하는 경우
- ValueFilter 값 수정
- BeforeFilter 직렬화할 때 앞에 콘텐츠 추가
- AfterFilter 직렬화 시 마지막에 내용 추가
PropertyFilter는 PropertyName과 PropertyValue를 기준으로 직렬화 여부를 결정합니다
public interface PropertyFilter extends SerializeFilter { boolean apply(Object object, String propertyName, Object propertyValue); }
Yes 구현을 확장하면 객체나 속성 이름 또는 속성 값을 기반으로 직렬화가 필요한지 여부를 결정할 수 있습니다. 예:
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 전용 기반과 다릅니다. 객체 및 이름에 대해 getter를 호출하기 전에 판단하여 getter 호출에서 가능한 예외를 피하십시오.
public interface PropertyPreFilter extends SerializeFilter { boolean apply(JSONSerializer serializer, Object object, String name); }
NameFilter 직렬화 중에 키 수정
키를 수정해야 하는 경우 프로세스가 반환됩니다. 가치는 # 🎜🎜#
public interface NameFilter extends SerializeFilter { String process(Object object, String propertyName, Object propertyValue); }
fastjson에는 첫 번째 문자를 대문자로 하여 파스칼 스타일을 출력하는 데 사용되는 PascalNameFilter가 내장되어 있습니다. 예:
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); }