我使用傑克遜1.9.2與XML dataformat module。我需要調整傑克遜序列化數組,列表和集合的方式。傑克遜XML全球集裝箱類型的元素名稱
默認情況下,一個int數組屬性稱爲myProperty
包含了幾個數字,傑克遜/ XML是生產以下:
<myProperty>
<myProperty>1</myProperty>
<myProperty>2</myProperty>
</myProperty>
我需要產生的是:
<myProperty>
<item>1</item>
<item>2</item>
</myProperty>
我可以使用JacksonXmlElementWrapper
和JacksonXmlProperty
這樣的組合來執行此操作,如下所示:
@JacksonXmlElementWrapper(localname='myProperty')
@JacksonXmlProperty(localname='item')
public int[] myProperty;
但是,該解決方案需要我手動將這些註釋應用於我的POJO中的每個數組,列表和集合。一個更好的解決方案將允許我在全局範圍內爲所有數組,列表,集合類型應用一次解決方案。有關如何實施此類解決方案的任何想法?
謝謝!
我喜歡這種方法。任何線索我怎麼可能爲'@JacksonXmlProperty(localName ='item')'做同樣的事情? – maxenglander
是的,那個註解也是通過'AnnotationIntrospector'處理的,所以你可以重寫它。 – StaxMan
對不起,我看到它可以用'findSerializablePropertyName'完成,但是我不能簡單地從該方法返回''item「':當上下文在一個範圍內時,我需要有選擇地返回''item''非映射容器類型(列表,數組或集合)。以這種方式調整'findSerializablePropertyName'是我不知道該怎麼做的。 – maxenglander