Json 注解(待补充)

1.@JsonIgnoreProperties
在类上注解哪些属性不用参与序列化和反序列化

@Data
@JsonIgnoreProperties(value = { "word" })  
public class Person { 
  private String hello;
  private String word;
}

2.@JsonIgnore
属性上忽略

@Data
public class Person { 
  private String hello;
  @JsonIgnore
  private String word;
}

3.@JsonFormat
格式化序列化后的字符串

@Data
public class Person{
  @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm",timezone = "GMT+8")
  private Date time;
  private String hello;
  private String word;
}

4.@JsonSerialize
序列化的时候通过重写的方法,可以加在get方法上,也可以直接加在属性上

@Data
public class Person { 
  private String hello;
  private String word;
  @JsonSerialize(using = CustomDoubleSerialize.class)
  private Double money;
}

public class CustomDoubleSerialize extends JsonSerializer<Double> {  
   private DecimalFormat df = new DecimalFormat("#.##"); 
   @Override    
   public void serialize(Double value, JsonGenerator jgen, SerializerProvider provider) throws IOException,            JsonProcessingException { 
       jgen.writeString(df.format(value));    
   }
}

5.@JsonDeserialize
反序列化的时候通过重写的方法,可以加在set方法上,也可以直接加在属性上

@Data
public class Person { 
  private String hello;
  private String word; 
  @JsonDeserialize(using = CustomDateDeserialize.class)
  private Date time;
}

public class CustomDateDeserialize extends JsonDeserializer<Date> {  
  
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  
    @Override  
    public Date deserialize(JsonParser jp, DeserializationContext ctxt)  
            throws IOException, JsonProcessingException {  
  
        Date date = null;  
        try {  
            date = sdf.parse(jp.getText());  
        } catch (ParseException e) {  
            e.printStackTrace();  
        }  
        return date;  
    }  
} 

5.@JsonInclude
Include.Include.ALWAYS 默认
Include.NON_DEFAULT 属性为默认值不序列化
Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
Include.NON_NULL 属性为NULL 不序列化

@Data
public class OrderProcessTime { 
    @JsonInclude(JsonInclude.Include.ALWAYS)
    private Date plan;
}

6.@JsonProperty
用于表示Json序列化和反序列化时用到的名字,例如一些不符合编程规范的变量命名

@Data
public class Person { 
  private String hello;
  private String word; 
  private Date time;
  @JsonProperty(value = "DeliveryTime")
  private Integer deliveryTime;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,486评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,956评论 18 399
  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 13,749评论 0 24
  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 6,228评论 0 3
  • 今天是儿子这几天早起的第一天,比他计划的时间晚了一些。按照他的计划去公园跑步,休息的时间,他看到了池塘里面有鸭子,...
    透过开满鲜花的月亮阅读 1,020评论 0 0