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
字段?
您可以配置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只忽略特定的注释。
混合可能适用于忽略课程上的特定注释。 –
看来,这真的是唯一的方式来配置这个 - 无赖。由于这不是一个可行的选择,我很可能不得不求助于手动设置。尽管如此,我仍然会接受这个问题。 – user991710
这正是我想找的。谢谢 –
你想让杰克逊忽略杰克逊用来忽略属性的注释吗?有些东西听起来不正确... –
是的,我不得不一再想要问这个问题。不幸的是,* RESTful命名原则*的后果。 – user991710