FastJsonの@JSONFieldアノテーション

ソースコードはこんな感じ

package com.alibaba.fastjson.annotation;

public @interface JSONField {
    
    
    // 配置序列化和反序列化的顺序,1.1.42版本之后才支持
    int ordinal() default 0;

     // 指定字段的名称
    String name() default "";

    // 指定字段的格式,对日期格式有用
    String format() default "";

    // 是否序列化
    boolean serialize() default true;

    // 是否反序列化
    boolean deserialize() default true;
}

デモ


public class AnnotationDemo {
    
    


   static Pojo pojo;

   static {
    
    
      pojo = new Pojo();
      pojo.setId(1).setDate1(new Date()).setDate2(new Date()).setDate3(new Date()).setF1(111).setF2(222);


   }

   @Test
   public void ceui() {
    
    
      String jsonString = JSON.toJSONString(pojo);
      System.out.println("jsonString = " + jsonString);
      //结果: {"date1":"20190830","date3":1567136117221,"pojoId":1,"f2":222,"f1":111}

   }


   static class Pojo {
    
    

      //重新命名
      @JSONField(name = "pojoId")
      private int id;
      // 配置date序列化和反序列使用yyyyMMdd日期格式
      @JSONField(format = "yyyyMMdd")
      private Date date1;

      // 不序列化
      @JSONField(serialize = false)
      private Date date2;

      // 不反序列化
      @JSONField(deserialize = false)
      private Date date3;

      // 按ordinal排序
      @JSONField(ordinal = 2)
      private int f1;

      @JSONField(ordinal = 1)
      private int f2;
      //*****************省略getset方法.

おすすめ

転載: blog.csdn.net/qq_41489540/article/details/109069490