2014-10-20 123 views
1

我試圖使用Jackson-datatype-xml將java對象序列化爲XML。這樣做時,我有一個接口,如:Jackson的序列化接口

interface SpecificationType {...} 

class FreeText implements SpecificationType {...} 

class Selection implements SpecificationType {...} 

因爲此接口的,我有一個使用它作爲一個領域的又一類:

class Question { 

    private final SpecificationType specificationType; 

    .... 

} 

的問題是,當我序列這當我希望XML標籤反映具體類FreeText(例如)時,XML標籤將爲SpecificationType。有沒有辦法與傑克遜做到這一點?

例如,

我得到:

<SpecificationType>...</SpecificationType> 

我想:我認爲,

<FreeText>...</FreeText> 

回答

2

實現這一點的唯一方法是使多態性分型。因此,您可以嘗試在有問題的物業上添加@JsonProperty,包含類型爲As.WRAPPER_OBJECT。 然後這會使用「type id」作爲你想要的元素。但有一件事,我不是沒有嘗試過就不會100%確定是否會有額外的元素;應該很容易去嘗試一下,看看結果是什麼樣子的。

+1

感謝您的快速響應! OP是我正在合作的合作社;我們明天會看看這個。 – 2014-10-20 23:18:29

+1

我使用@JsonTypeInfo,但是,工作非常感謝這麼多! – mattklamp 2014-10-21 01:07:51

+0

@mattklamp太棒了!感謝您的驗證。 – StaxMan 2014-10-22 00:59:25