2017-05-07 12 views
0

雖然工作的一個項目,我做了把一個@JsonIgnore的二傳手,而不是吸氣特性如下@JsonIgnore行爲

private Set<Book> books; 


public Set<Book> getBooks() { 
    return books; 
} 

@JsonIgnore 
public void setBooks(Set<Book> books) { 
    this.books = books; 
} 

此的錯誤應該導致我getbooks API調用工作正常(從郵遞員打電話)。 但是,我意識到即使在setter上設置了@JsonIgnore,@JsonIgnore也會阻止序列化。

這是通常@JsonIgnore的工作原理嗎?我認爲只設置@JsonIgnore可以防止序列化。即使我把它放在吸氣劑或吸氣劑上,它也會阻止序列化。

任何意見讚賞。謝謝。

+0

您是否在@JsonIgnore上提及了此[post](http://www.davismol.net/2015/03/10/jackson-json-difference-between-jsonignore-and-jsonignoreproperties-annotations/) ' –

+0

感謝蘭吉斯。我恰好在發佈之前閱讀了這篇文章,但信息細緻入微,可能沒有記錄在我厚厚的頭骨中。重新閱讀下面的RC迴應後,現在已經非常清楚了。謝謝。 – HopeKing

回答

2

javadoc(重點是我的):

此外,從傑克遜1.9,如果這是一個屬性,它也會導致導致忽略整個屬性相關聯的唯一註解: 也就是說,如果setter具有此註釋並且getter沒有註釋,則getter也會被有效地忽略。不同的訪問者仍有可能使用不同的註釋;所以如果只有「getter」被忽略,其他訪問器(setter或field)將需要明確的註釋以防止忽略(通常爲JsonProperty)。