我正在使用Jackson(2.1.1)進行JSON序列化/反序列化。我有一個帶有JAXB註釋的現有類。大多數這些註釋都是正確的,可以像Jackson一樣使用。我正在使用混入來稍微改變這些類的反序列化/序列化。Jackson Jaxb註釋優先 - @JsonProperty重寫@XmlTransient
在我ObjectMapper構造我做到以下幾點:
setAnnotationIntrospector(AnnotationIntrospector.pair(
new JacksonAnnotationIntrospector(),
new JaxbAnnotationIntrospector(getTypeFactory())));
基於上述,傑克遜註解優先於JAXB,因爲introspectors的順序。這是基於Jackson Jaxb docs。對於我想要忽略的字段,將@JsonIgnore
添加到混音中的字段工作正常。在我不想忽略的現有類中有幾個字段被標記爲@XmlTransient
。我曾嘗試在混音中添加@JsonProperty
到該字段,但它似乎不起作用。
原來這裏是類:
public class Foo {
@XmlTransient public String getBar() {...}
public String getBaz() {...}
}
這裏是混合式:
public interface FooMixIn {
@JsonIgnore String getBaz(); //ignore the baz property
@JsonProperty String getBar(); //override @XmlTransient with @JsonProperty
}
任何想法如何解決這個不修改原班?
我還測試加入到@JsonProperty成員,而不是使用混合插件:
public class Foo {
@JsonProperty @XmlTransient public String getBar() {...}
@JsonIgnore public String getBaz() {...}
}
我似乎獲得相同的行爲,因爲我與混合式一樣。除非刪除@XmlTransient,否則該屬性將被忽略。