2014-10-20 131 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