0
public class UrlTemplate extends AbstractBeanDefinition implements Serializable {
private List<HeaderField> header = new ArrayList<>();
@Tag("header")
public List<HeaderField> getHeader() {
return this.header;
}
@Node("header/header-field")
public void setHeader(HeaderField headerField) {
this.header.add(headerField);
}
public void setHeader(List<HeaderField> header) {
this.header = header;
}
}
Tag
和Node
註釋被其它庫使用,並且我不能改變方法setHeader(HeaderField headerField)
。傑克遜:需要另一種方法是一個setter
我定義了一個有效的二傳手setHeader(List<HeaderField> header)
序列化,但是當我試圖序列UrlTemplate
爲字符串和反序列化字符串UrlTemplate
,拋出異常:
com.fasterxml.jackson.databind.JsonMappingException:
Conflicting setter definitions for property "header":
com.enniu.crawler.encreeper.core.domain.config.search.UrlTemplate#setHeader(1 params) vs
com.enniu.crawler.encreeper.core.domain.config.search.UrlTemplate#setHeader(1 params)
我想我可以宣佈setHeader(List<HeaderField> header)
是二傳手,傑克遜採取反序列化,但我不知道如何與傑克遜做到這一點。
任何人都可以給我一些提示嗎?使用JsonProperty
註釋傑克遜
@JsonProperty("header")
private Object headerJson;
public Object getHeaderJson() {
return status;
}
public void setHeaderJson(Object headerJson) {
this.headerJson= headerJson;
}
headerJson
用'@JsonProperty(「header」)顯式標記其中一個setter?解決問題嗎?如果沒有,你可能還需要'@ JsonIgnore'另一個setter(你不想用於JSON的那個)。 – dhke
@dhke謝謝,我會嘗試 – Sayakiss