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.

  1. PropertyPreFilter détermine s'il faut sérialiser en fonction du PropertyName
  2. PropertyFilter détermine s'il faut sérialiser en fonction du PropertyName et de PropertyValue
  3. NameFilter modifie la clé, si vous devez modifier la clé, traite la valeur de retour
  4. ValueFilter modifie la valeur
  5. BeforeFilter pendant la sérialisation Ajouter du contenu au début
  6. 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);
  }