2016-05-19 5 views
0

を使用して複数のプロパティをシリアル化するジャクソンXMLマッパーを使用して、どのように私は以下のように見えるクラスのインスタンスを持っている同じローカル名

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に設定するが、元の項目の列挙値に基づいをを算出し、meani私はフィールドに注釈を付けるだけでなく、ゲッター(フィールドに+ @JsonIgnore)を使う必要があります。 私はフォーマットを生成するためにゲッターで次のアノテーションを使用する

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

を試してみたが、同じローカル名を使用しているとき、それは衝突にそれらのいずれかにのみを使用することができます:

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

ミックスインを使用しても、同じ制限が同じように適用されることは明らかです。

このXML構造の作成方法を教えてください。

答えて

0

XML作成のための特別なメソッドを作成しましたが、それぞれが "value"という名前のフィールドのみを持つクラスのインスタンスを返し、必要なフォーマットに "自動的に"シリアル化されます。 注釈は、Jackson mixinを使用して追加されました

関連する問題