jackson 如何忽略@JsonProperty(访问= JsonProperty.访问.WRITE_ONLY)

ekqde3dh  于 2023-02-04  发布在  其他
关注(0)|答案(2)|浏览(207)

我有一个pojo,大多数时候我不想写一个字段到Json,但是对于一个特定的条件我想写这个值到json。

public class Person {

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

是否可以将对象Map器配置为忽略@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)

eaf3rand

eaf3rand1#

创建新的对象Map器并禁用Map器功能。USE_ANNOTATIONS。

ObjectMapper objectMapper = new ObjectMapper();
objectMapper = objectMapper.disable(MapperFeature.USE_ANNOTATIONS);
Person person = objectMapper.convertValue(personJson, Person.class);
jhiyze9q

jhiyze9q2#

老实说,我不知道一个相当直接的方法,真正让ObjectMapper忽略一个特定的注解,但为什么不使用@JsonView
定义一些视图...

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

...将其放在条件字段中...

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

...并使用Map器序列化它...

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

上面的样本取自好的老Baeldung,在那里你可以找到这个解决方案的更好的变体。

相关问题