使用Jackson XML Mapper,如何使用相同的本地名称

时间:2016-05-19 09:10:13

标签: java xml serialization jackson

我有一个看起来如下的类的实例

public class SomeEntity{
private OpMetric metric = Options.MEASURED;

private Scope scope = Scopes.GLOBAL;

}

需要序列化为以下XML

<SomeEntity xmlns="">       
    <op-metric>
        <value>0.3</value>
    </op-metric>
    <calculated-scope>          
        <value>updated-global</value>
    </calculated-scope>
</SomeEntity >

在这两种情况下,根据原始字段的枚举值,要在xml中设置的值计算,这意味着我需要使用getters(字段上的+ @JsonIgnore)而不仅仅是注释田野。 我试图在getter上使用以下注释来生成格式

@JacksonXmlProperty(isAttribute = false, localName = "value")
@JacksonXmlElementWrapper(localName="op-metric")

但是当使用相同的本地名称时,它只能在其中一个上使用:

com.fasterxml.jackson.databind.JsonMappingException: Conflicting getter definitions for property "value":

使用Mixins并没有给我带来太大的影响,因为很明显同样的限制也适用于那里。

我应该如何创建这种XML结构?

1 个答案:

答案 0 :(得分:0)

我最终创建了用于创建XML的特殊方法,每个方法都返回一个类的实例,该类的唯一字段名为“value”,然后“自动”将其序列化为所需的格式。 使用Jackson mixin添加注释