如何忽略@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)

问题描述

我有一个 pojo,大多数时候我不想将字段写入 Json,但对于特定条件,我想将此值写入 json。例如我的模型是;

public class Person {

    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    public String value;
}

是否可以将 Object Mapper 配置为忽略 @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)

解决方法

老实说,我不知道真正让 ObjectMapper 忽略特定注释的非常直接的方法,但为什么不使用 @JsonView

只需定义一些视图...

public class Views {
    public static class Public {
    }
    public static class Internal {
    }
}

…把它放在你的条件字段上…

public class Person {
    @JsonView(Views.Internal.class)
    public String value;
}

...并使用您的映射器对其进行序列化...

    String result = mapper
      .writerWithView(Views.Public.class)
      .writeValueAsString(person);

以上示例取自 good old Baeldung,您可以在其中找到该解决方案的更多出色变体。