0

我有一个现有的对象 - 我无法修改 - 我们希望在序列化期间添加一个自定义 ID 属性。

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

理想情况下,我们希望能够将其转换为 XML,并为每个Address对象关联一个 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

自定义mixin怎么样?

@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 回答
0

我不明白。为什么不使用继承?

class IdentifiableAddress extends Address {
    private long id;

    // Getter/Setter...
}

我可能错过了一些东西。“不可修改”是什么意思?你不能修改对象或类?

于 2018-05-29T18:43:10.433 回答