2015-09-01 63 views
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; 
    } 
} 

TagNode註釋被其它庫使用,並且我不能改變方法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

+0

用'@JsonProperty(「header」)顯式標記其中一個setter?解決問題嗎?如果沒有,你可能還需要'@ JsonIgnore'另一個setter(你不想用於JSON的那個)。 – dhke

+0

@dhke謝謝,我會嘗試 – Sayakiss

回答

1

嘗試將映射到JSON header所以應該解決衝突問題。