您好,登錄后才能下訂單哦!
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 都不序列化(想前端傳數據的時候list為空的時候不進行序列化)
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; }
7.Java序列化排除指定字段
使用變量修飾符 transient
這里打印password 的值是為 空的
使用關鍵字 static
第二種這個很容易產生誤解,content在輸出的時候還是有數據的,
反序列化輸入的值是 “只是之前的值” ,之后打印的值雖然也是看到 “只是之前的值”,其實這個不是序列化那個的值的
如果不理解,可以從新設置一個content的值
MsgInfo.setContent("這是修改的");
在反序列化打印處理后,會看到輸出的值是剛剛設置的值 “這是修改的”
關于Json的注解有哪些問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。