在将Java中的3节点引用序列化为JSON时,如何防止无限循环?

在我的
Spring MVC应用程序中,我有三个类 – 内容,类别和文档 – 它们都是相互关联的,必须序列化为
JSON,但这样做会导致无限循环.这种关系是这样的:

Content -> List<Category> -> List<Document> -> List<Content> -> (etc.)

其中Category是Content等的属性.我正在尝试序列化它,以便引用结束于List(以便content.categories.documents暴露给视图),但没有找到任何方法去实现它.使用Jackson的@JsonManagedReference和@JsonBackReference进行注释将无法正常工作,因为其中一些字段已经注释为其他关系.除了可能构建特定于相关视图的模型之外,不确定如何解决此问题.

编辑:如果这有帮助,我得到的错误是“org.springframework.http.converter.HttpMessageNotWritableException:无法写入JSON:无限递归(StackOverflowError)”,后跟跟踪链的跟踪.

最佳答案 也许看一下@JsonIdentityInfo注释,它可以用来处理循环依赖(
this entry提到它)?它不适用于集合(唉),但适用于集合,数组和映射中包含的POJO.

点赞