zoukankan      html  css  js  c++  java
  • jackson-databind注解

    jackson中的@JsonBackReference和@JsonManagedReference,以及@JsonIgnore均是为了解决对象中存在双向引用导致的无限递归(infinite recursion)问题。这些标注均可用在属性或对应的get、set方法中。 

    @JsonBackReference    @JsonManagedReference

    经常和@JsonManagedReference通常配对使用,通常用在父子关系中。

    @JsonBackReference标注的属性在序列化(serialization,即将对象转换为json数据)时,会被忽略(即结果中的json数据不包含该属性的内容)。

    @JsonManagedReference标注的属性则会被序列化。

    在序列化时,@JsonBackReference的作用相当于@JsonIgnore,此时可以没有@JsonManagedReference。

    但在反序列化(deserialization,即json数据转换为对象)时,

      如果没有@JsonManagedReference,则不会自动注入@JsonBackReference标注的属性(被忽略的父或子);

      如果有@JsonManagedReference,则会自动注入自动注入@JsonBackReference标注的属性。 

    @JsonIgnore

    @JsonIgnore:作用是进行JSON操作时忽略该属性,以断开无限递归,序列化或反序列化均忽略。当然如果标注在get、set方法中,则可以分开控制,序列化对应的是get方法,反序列化对应的是set方法。

    在父子关系中,当反序列化时,@JsonIgnore不会自动注入被忽略的属性值(父或子),这是它跟@JsonBackReference和@JsonManagedReference最大的区别。

    @JsonIgnoreProperties

    在类的头部统一声明忽略的属性,如:

    @JsonIgnoreProperties({ "extra", "uselessValue" })
    public class Value {
      public int value;
    }

    对于意外的位置属性,也可以忽略

    @JsonIgnoreProperties(ignoreUnknown=true)
    public class PojoWithAny {
      public int value;
    }

    @JsonFormat

    @JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。

    @JsonProperty

     此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。

  • 相关阅读:
    display:table-cell,inline-block 之间的缝隙
    ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study(树状数组)
    ACM-ICPC 2018 徐州赛区网络预赛 J Maze Designer(最大生成树+LCA)
    1076 两条不相交的路径
    1107 斜率小于0的连线数量
    1112 KGold
    51nod 1110 距离之和最小V3
    1246 罐子和硬币
    1163 最高的奖励(贪心+优先队列)
    1028C:Rectangles
  • 原文地址:https://www.cnblogs.com/xiaoQ0725/p/8078807.html
Copyright © 2011-2022 走看看