Jackson对象映射器如何忽略JsonProperty批注?

use*_*710 5 java jackson

我有以下情况:

public class A {

    @JsonProperty("member")
    private int Member;
}

public class B {

    private int Member;
}
Run Code Online (Sandbox Code Playgroud)

现在,我希望执行以下操作:

ObjectMapper mapper = new ObjectMapper();
B b = new B(); b.setMember("1");

A a = mapper.converValue(b, A.class);
Run Code Online (Sandbox Code Playgroud)

通常,这会起作用。但是,由于objectMapper考虑了诸如之类的注释@JsonProperty,因此得到以下结果:

A.getMember(); // Member = NULL
Run Code Online (Sandbox Code Playgroud)

有一种解决方法,其中所有可能null归因于此的字段都是手动设置的,即A.setMember(b.getMember());,但这首先违背了使用的目的,objectMapper并且可能容易出错。

有没有一种方法可以配置objectMapper来忽略@JsonProperty给定类(或全局)的字段?

Plo*_*log 5

您可以通过执行以下操作将 ObjectMapper 配置为忽略 @JsonProperty 之类的注释:

ObjectMapper objectMapper = new ObjectMapper().configure(
             org.codehaus.jackson.map.DeserializationConfig.Feature.USE_ANNOTATIONS, false)
                .configure(org.codehaus.jackson.map.SerializationConfig.Feature.USE_ANNOTATIONS, false)
Run Code Online (Sandbox Code Playgroud)

但这会导致它也忽略@JsonIgnore 等内容。我不知道有什么方法可以让 ObjectMapper 只忽略特定的注释。

  • 在 Jackson 2.x 中使用 `objectMapper.configure(MapperFeature.USE_ANNOTATIONS, false)` (4认同)