有关于Gson"循环参考"的解决方案吗?

Joh*_*Fee 7 java circular-reference gson

我发现很多关于Gson循环引用的文章,但我找不到一个优雅的解决方案.

据我所知,一些解决方案是:

  • 将导致循环引用的属性设置为"transient".
  • 使用某些注释排除属性.

但作为一般性问题,是否有一些解决问题的共同策略?

Sta*_*Man 4

据我所知,Gson 中没有针对循环引用的自动化解决方案。据我所知,唯一能自动处理循环引用的 JSON 生成库是XStream(带有 Jettison 后端)。

编辑:Jackson 还支持使用注释处理循环引用@JsonIdentityInfo;因此,虽然不是自动的(您确实需要标记需要对象 ID 处理的引用),但它确实可以解决大多数情况。

  • 正确的是,Gson 没有针对循环引用的自动解决方案,除了标记要跳过的 Java 字段和/或编写自定义序列化代码之外,它也没有提供序列化解决方案。或者,Jackson 为序列化和反序列化问题提供了基于注释的解决方案。请参阅第 7 点:http://www.cowtowncoder.com/blog/archives/2010/11/entry_434.html (2认同)