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

问题描述:

我有以下情形:Jackson对象映射器如何忽略JsonProperty注释?

public class A { 

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

public class B { 

    private int Member; 
} 

现在,我要做到以下几点:

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

A a = mapper.converValue(b, A.class); 

通常情况下,这会工作。然而,由于objectMapper需要注释,比如@JsonProperty考虑,我得到以下结果:

A.getMember(); // Member = NULL 

有一种变通方法,在这里由于这一点,预计将null所有字段手动设置,即A.setMember(b.getMember());,但是这首先破坏了使用objectMapper的目的,并且可能容易出错。

有没有办法将objectMapper配置为忽略给定类(或全局)的@JsonProperty字段?

+0

你想让杰克逊忽略杰克逊用来忽略属性的注释吗?有些东西听起来不正确... –

+0

是的,我不得不一再想要问这个问题。不幸的是,* RESTful命名原则*的后果。 – user991710

您可以配置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) 

但是,这将导致它也忽略之类的东西@JsonIgnore等。我不知道有任何办法让ObjectMapper只忽略特定的注释。

+0

混合可能适用于忽略课程上的特定注释。 –

+0

看来,这真的是唯一的方式来配置这个 - 无赖。由于这不是一个可行的选择,我很可能不得不求助于手动设置。尽管如此,我仍然会接受这个问题。 – user991710

+0

这正是我想找的。谢谢 –