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
序列化为String并将String反序列化为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)
是Jackson进行反序列化的二传手,但是我不知道如何与Jackson一起使用。有人可以给我一些提示吗?
最佳答案
尝试使用杰克逊的JsonProperty
批注
@JsonProperty("header")
private Object headerJson;
public Object getHeaderJson() {
return status;
}
public void setHeaderJson(Object headerJson) {
this.headerJson= headerJson;
}
headerJson
将被映射到json header
,因此它应解决冲突问题。