API Fastjson SerializeFilter
Introduction à l'API Fastjson SerializeFilter
SerializeFilter personnalise la sérialisation via une extension programmatique. fastjson prend en charge 6 types de SerializeFilter pour une sérialisation personnalisée dans différents scénarios.
- PropertyPreFilter détermine s'il faut sérialiser en fonction du PropertyName
- PropertyFilter détermine s'il faut sérialiser en fonction du PropertyName et de PropertyValue
- NameFilter modifie la clé, si vous devez modifier la clé, traite la valeur de retour
- ValueFilter modifie la valeur
- BeforeFilter pendant la sérialisation Ajouter du contenu au début
- AfterFilter Ajouter du contenu à la fin pendant la sérialisation
PropertyFilter Déterminer s'il faut sérialiser en fonction de PropertyName et PropertyValue
public interface PropertyFilter extends SerializeFilter { boolean apply(Object object, String propertyName, Object propertyValue); }
Peut être étendu pour déterminer si une séquence est requise en fonction de changement de nom d'objet ou d'attribut ou de valeur d'attribut. Par exemple :
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 détermine s'il faut sérialiser en fonction du PropertyName
est différent du PropertyFilter qui détermine uniquement en fonction de l'objet et du nom avant d'appeler le getter, évitant ainsi d'éventuelles exceptions dans l'appel du getter.
public interface PropertyPreFilter extends SerializeFilter { boolean apply(JSONSerializer serializer, Object object, String name); }
NameFilter Modifier la clé pendant la sérialisation
Si vous devez modifier la clé, la valeur de retour du processus peut
public interface NameFilter extends SerializeFilter { String process(Object object, String propertyName, Object propertyValue); }
fastjson a un PascalNameFilter intégré, qui est utilisé pour afficher le style Pascal avec le premier caractère en majuscule. Par exemple :
import com.alibaba.fastjson.serializer.PascalNameFilter; Object obj = ...; String jsonStr = JSON.toJSONString(obj, new PascalNameFilter());
ValueFilter La sérialisation consiste à modifier la valeur
public interface ValueFilter extends SerializeFilter { Object process(Object object, String propertyName, Object propertyValue); }
BeforeFilter Ajouter du contenu au début lors de la sérialisation
Effectuer certaines opérations avant de sérialiser toutes les propriétés de l'objet, comme appeler writeKeyValue pour ajouter du contenu
public abstract class BeforeFilter implements SerializeFilter { protected final void writeKeyValue(String key, Object value) { ... } // 需要实现的抽象方法,在实现中调用writeKeyValue添加内容 public abstract void writeBefore(Object object); }
AfterFilter ajoute du contenu à la fin lors de la sérialisation
effectue certaines opérations après avoir sérialisé toutes les propriétés de l'objet, comme appeler writeKeyValue pour ajouter du contenu
public abstract class AfterFilter implements SerializeFilter { protected final void writeKeyValue(String key, Object value) { ... } // 需要实现的抽象方法,在实现中调用writeKeyValue添加内容 public abstract void writeAfter(Object object); }