可以配置Jackson-Json Mapper根据它序列化的对象排除属性吗?

Rob*_*ond 7 java json jackson

假设我有一些对象,例如带有地址对象列表的业务,以及具有业务的订单.

是否可以进行配置,以便在序列化顺序时,它会从Business对象中排除地址列表,并且在序列化业务时它包含列表?

我正在使用ajax为RIA提取数据,在使用Order时我并不真正关心地址数据,但在处理Business时我确实想要列表.

我也使用Hibernate进行持久化,因此这实际上是一种效率和性能优化.

Sta*_*Man 8

如果我正确地理解了问题,是的,我认为Jackson的JSON Views会允许这样做.您基本上会为相同类型创建两个不同的视图(配置文件),并选择用于序列​​化的视图.


Wol*_*ram 5

您可以使用JsonIgnore Annotation忽略序列化中的Address列表,并在序列Business时关闭ObjectMapperSerializationConfig中的注释使用.当然,这意味着您可能使用的其他注释也会被忽略.不完美,但你可能会找到一个更好的解决方案,希望它有助于(显然).

ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().disable(Feature.USE_ANNOTATIONS);
Run Code Online (Sandbox Code Playgroud)