How to specify jackson to only use fields - preferably globally

前端 未结 8 676
旧巷少年郎
旧巷少年郎 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:35

    If you want a way to do this globally without worrying about the configuration of your ObjectMapper, you can create your own annotation:

    @Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @JacksonAnnotationsInside
    @JsonAutoDetect(
            getterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE,
            setterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.NONE,
            creatorVisibility = JsonAutoDetect.Visibility.NONE
    )
    public @interface JsonExplicit {
    }
    

    Now you just have to annotate your classes with @JsonExplicit and you're good to go!

    Also make sure to edit the above call to @JsonAutoDetect to make sure you have the values set to what works with your program.

    Credit to https://stackoverflow.com/a/13408807 for helping me find out about @JacksonAnnotationsInside

提交回复
热议问题