How to specify jackson to only use fields - preferably globally

前端 未结 8 759
旧巷少年郎
旧巷少年郎 2020-11-22 17:03

Default jackon behaviour seems to use both properties (getters and setters) and fields to serialize and deserialize to json.

I would like to use the fields as the ca

8条回答
  •  面向向阳花
    2020-11-22 17:57

    Specifically for boolean is*() getters:

    I've spend a lot of time on why neither below

      @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
    

    nor this

      setVisibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.NONE);
      setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE);
      setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
    

    worked for my Boolean Getter/Setter.

    Solution is simple:

      @JsonAutoDetect(isGetterVisibility = Visibility.NONE, ...          
      setVisibility(PropertyAccessor.IS_GETTER, JsonAutoDetect.Visibility.NONE);
    

    UPDATE: spring-boot allowed configure it:

    jackson:
      visibility.field: any
      visibility.getter: none
      visibility.setter: none
      visibility.is-getter: none
    

    See Common application properties # JACKSON

提交回复
热议问题