Fastjson 自訂序列化


Fastjson 自訂序列化

1.簡介

fastjson支援多種方式自訂序列化。

  • 透過@JSONField自訂序列化
  • 透過@JSONType自訂序列化
  • 透過SerializeFilter自訂序列化
  • 透過ParseProcess自訂反序列化

2. 使用@JSONField設定

可以把@JSONField設定在欄位或getter/setter方法上。例如:

 public class VO {
      @JSONField(name="ID")
      private int id;
 }

 public class VO {
      private int id;

      @JSONField(name="ID")
      public int getId() { return id;}

      @JSONField(name="ID")
      public void setId(int value) {this.id = id;}
 }

更多看這裡:JSONField

3. 使用@JSONType設定

和JSONField類似,但JSONType配置在類別上,而不是field或getter/setter方法上。

4. 透過SerializeFilter自訂序列化

透過SerializeFilter可以使用擴充程式設計的方式實現客製化序列化。 fastjson提供了多種SerializeFilter:

  • PropertyPreFilter 根據PropertyName判斷是否序列化
  • PropertyFilter 根據PropertyName和PropertyValue來判斷是否序列化
  • NameFilter 修改Key,如果需要修改Key,process回傳值則可
  • ValueFilter 修改Value
  • BeforeFilter 序列化時在最前面加入內容
  • AfterFilter 序列化時在最後加入內容
SerializeFilter filter = ...; // 可以是上面5个SerializeFilter的任意一种。
  JSON.toJSONString(obj, filter);

更多看這裡: SerializeFilter

#5. 透過ParseProcess客製化反序列化

客製化反系列化API ParseProcess