我有一个看起来如下的类的实例
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结构?
答案 0 :(得分:0)
我最终创建了用于创建XML的特殊方法,每个方法都返回一个类的实例,该类的唯一字段名为“value”,然后“自动”将其序列化为所需的格式。 使用Jackson mixin添加注释