处理Jackson双向引用的最佳方法

时间:2018-11-26 14:50:03

标签: jackson jsonidentityinfo infinite-recursion

我正在尝试使用杰克逊(Jackson)为我们的核心组件构建其余的API,但是某些对象遇到此异常时会遇到问题:

  

javax.ws.rs.ProcessingException:com.fasterxml.jackson.databind.JsonMappingException:无限递归(StackOverflowError)

搜索后,我了解了几种解决方法。 例如 https://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion

我使用了对我来说很好的@JsonIdentityInfo,但是问题是哪种方法更好

在此帖子中: Infinite Recursion with Jackson JSON and Hibernate JPA issue

有人声称需要谨慎使用@JsonIdentityInfo,因为它可能会引起问题:

  

在这种情况下,您必须要小心,因为您可能需要多次读取对象的属性(例如,在一个产品列表中有多个共享同一卖方的产品),并且此注释会阻止您执行此操作所以。我建议始终查看Firebug日志以检查Json响应,并查看代码中发生了什么。

我也看到了这篇文章:http://springquay.blogspot.com/2016/01/new-approach-to-solve-json-recursive.html

@JsonIdentityInfo

我了解@JsonIdentityInfo是Jackson 2中的较新方法。

它的优点是需要最少的代码更改(只需将此注释放入有问题的对象模型中,而无需从另一端进行处理。

解释了一个缺点

@JsonIgnoreProperties 它需要更改更多类,而不仅仅是注释基类,而且我不确定如果从该对象模型继承多个类,它将如何工作。

0 个答案:

没有答案