我有一个现有的对象 - 我无法修改 - 我们希望在序列化期间添加自定义ID属性。
TestEntity {
...
@JsonProperty("addresses")
List<Address> addresses;
...
}
Address {
// NOTE NO ID
String street
String number
...
}
理想情况下,我们希望能够将其转换为XML,并将ID与每个Address
对象相关联。
...
<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);
答案 0 :(得分:0)
我不明白。你为什么不使用继承?
class IdentifiableAddress extends Address {
private long id;
// Getter/Setter...
}
我可能遗漏了一些东西。 “不可修改”是什么意思?你不能修改对象或类?
答案 1 :(得分: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++);