Fastjson API SerializeFilter


Pengenalan kepada Fastjson API SerializeFilter

SerializeFilter menyesuaikan siri melalui sambungan program. fastjson menyokong 6 jenis SerializeFilter untuk bersiri tersuai dalam senario yang berbeza.

  1. PropertyPrefilter Menentukan sama ada untuk bersiri berdasarkan nama propertyName
  2. PropertyFilter menentukan sama ada untuk bersiri berdasarkan nama propertyname dan propertyValue
  3. NameFilter mengubahsuai kunci, jika anda perlu mengubah suai kunci, proses pulangan proses
  4. ValueFilter mengubah nilai
  5. Sebelum Tapis semasa penyirian Tambah kandungan di hadapan
  6. Selepas Penapis Tambah kandungan di penghujung semasa penyirian

Penapis Harta Tentukan sama ada untuk bersiri berdasarkan PropertyName dan PropertyCreee bedasarkan

diperlukan untuk dilanjutkan objek atau nama atribut atau perubahan nilai atribut. Contohnya:

  public interface PropertyFilter extends SerializeFilter {
      boolean apply(Object object, String propertyName, Object propertyValue);
  }

adalah berbeza daripada PropertyFilter yang hanya menentukan berdasarkan objek dan nama sebelum memanggil getter, dengan itu mengelakkan kemungkinan pengecualian dalam panggilan getter.

  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

Jika anda perlu mengubah suai Kunci, proses nilai pulangan boleh

   public interface PropertyPreFilter extends SerializeFilter {
      boolean apply(JSONSerializer serializer, Object object, String name);
  }

fastjson mempunyai PascalNameFilter terbina dalam, yang digunakan untuk mengeluarkan gaya Pascal dengan aksara pertama dengan huruf besar. Contohnya:

public interface NameFilter extends SerializeFilter {
    String process(Object object, String propertyName, Object propertyValue);
}

ValueFilter Serialisasi adalah untuk mengubah suai Value

import com.alibaba.fastjson.serializer.PascalNameFilter;

Object obj = ...;
String jsonStr = JSON.toJSONString(obj, new PascalNameFilter());

Sebelum Penapis Tambah kandungan di hadapan semasa mensirikan

operasi tertentu bagi Vlue. untuk menambah Kandungan

   public interface ValueFilter extends SerializeFilter {
      Object process(Object object, String propertyName, Object propertyValue);
  }

AfterFilter menambah kandungan pada penghujung apabila mensiri

melakukan operasi tertentu selepas mensiri semua sifat objek, seperti memanggil writeKeyValue untuk menambah kandungan