0

シリアル化中にカスタム ID プロパティを追加しようとしている既存のオブジェクト (変更できません) があります。

TestEntity {
  ...
  @JsonProperty("addresses")
  List<Address> addresses;
  ...
}
Address {
   // NOTE NO ID
   String street
   String number
   ...
}

Address理想的には、これを XML に変換して、各オブジェクトに関連付けられた ID を使用できるようにしたいと考えています。

...
<Addresses>
  <Address id=1>
   <street>...</street>
   ...
  </Address>
  <Address id=2>
   <street>...</street>
   ...
  </Address>
  <Address id=3>
   <street>...</street>
   ...
  </Address>
</Addresses>

現在、カスタム mixin クラスを検討していますが、より良いオプションがあるかどうかはわかりませんでした。

これをよりよく解決する方法についてのアイデアはありますか?

===============================================

編集: 現在、TestEntity に基づいてシリアル化しているため、ラッピング エンティティを作成できません。

...
objectMapper.writeAsString(testEntity);
4

2 に答える 2

0

カスタムミックスインはどうですか?

@JsonAppend(
attrs = {
    @JsonAppend.Attr(value = "id")
}) 
public static class WithIdMixin {}

その後:

mapper.addMixIn(POJO.class, WithIdMixin.class);

ObjectWriter writer = mapper.writerFor(POJO.class).withAttribute("id", someGlobalLong++);
于 2018-05-29T19:24:37.987 に答える