我正在使用 Jackson 2,并在反序列化过程中对属性进行动态过滤。
我的想法是加载一个实体并阅读更改:
objectMapper.readerForUpdating(entity).readValue(json)
我试图使用@JsonView
,它适用于简单的情况。
我得到了 EntityA 的更新,读者应该只接受 EntityB 的 id,它用于通过 EntityManager 查找外部实体。
Using@JsonView
允许我处理它,但我需要为所有用例提供不同的视图类,仅更新 EntityB。
class Views {
public static class Update {
}
public static class Display extends Update {
}
}
class EntityA {
@JsonView(Views.Update)
EntityB b;
...
}
class EntityB {
@JsonView(Views.Update)
Integer id;
@JsonView(Views.???)
String value;
...
}
有什么方法可以在反序列化期间动态过滤属性,例如@JsonFilter
?
我找到了一个使用BeanDeserializerModifier的旧答案,但我希望有更好的方法。