Java Json序列化过程中如何避免无限循环

2024-04-18

我使用休眠检索兄弟列表

public class Brother {
    public int brotherId;
    public string name;

    public List<Brother> brothers;

    public Brother()
    {
        brothers = new ArrayList<Brother>();
    }

    //Getter Setter
} 

Hibernate 在兄弟列表中使用惰性选择进行配置,这在 Java 端有效, 但问题是当我想将 Brother 对象序列化为 JSON 时。

I've got org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError)

例如,布莱恩可以让马克成为兄弟,反之亦然......

我怎样才能解决它?有什么方法可以指示杰克逊库的最大递归数?

我的代码,非常简单。

Brother brother = this.myservice.getBrother(4);
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(brother));

问题的产生是因为循环引用.

Since Jackson 1.6您可以使用两个注释来解决无限 递归问题,在不忽略 getter/setter 的情况下 序列化:@JsonManagedReference and @JsonBackReference.

refer here https://stackoverflow.com/a/18288939/286588了解更多

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Json序列化过程中如何避免无限循环 的相关文章

随机推荐

  • 动态创建 iframe 并为其附加 onload 事件

    我动态创建了一个 iframe 并添加了src归因于它 然后我将此 iframe 附加到页面正文中 知道我想附上onload向 iframe 发送事件以读取 iframe 内容 有人可以建议我该怎么做吗 frame document cre
  • 并发写入向量

    我知道可以同时读取std vector没有 坏 后果 因为这个操作可以被认为是线程安全的 但对于写操作却不能这样说 但是 我想知道这是否并不总是正确的 例如考虑到我的特定情况 我有一个std vector
  • 如何在不更改 equals 和 hashcode 的情况下插入集合

    我正在寻找建议 我有一个Person具有字符串firstName和字符串lastName的类 当我试图插入具有相同字符串的列表值时 例如 set add new Person firstName lastName set add new P
  • 代表当前登录到单独 Web 客户端的用户从 API 访问 MS Graph

    我正在开发一个 API ASP NET Core 可以通过单独托管的 Web 客户端 React 访问 两者都作为应用程序服务托管在 azure 上 客户端应用程序必须具有基于azure Ad的身份验证 单租户 最好由基于aad的azure
  • Bash:向带有空格的字符串添加额外的单引号

    当我尝试将参数作为变量传递给 bash 中的任何命令时 如果变量值有空格 我可以看到 bash 添加了额外的引号 我正在创建一个文件 some file txt 并将其添加到变量 file 中 我正在使用 file 并将其存储在另一个变量
  • 是否有必要将每个 ManagementObject 都处理掉?

    我注意到ManagementObject is IDisposable 但它也是从ManagementClass GetInstances and ManagementObjectSearcher Get 这是否意味着我需要处理遇到的每个对
  • MongoDB 将我的数据库自动设置为“测试”。如何改变呢?

    mongoose connect process env DATABASE URL useNewUrlParser true const MyModel mongoose model mymodel new Schema name Stri
  • WebBrowser 控件:“指定的转换无效。”

    我使用 WebBrowser 控件导航到 WordPress 博客的登录页面 页面加载正常 但每当我尝试从线程访问 WebBrowser 时 我得到一个特定的强制转换无效的异常 另外 在调试时 一切都会冻结大约 5 秒 调试时 我尝试访问控
  • 为什么 SpringJUnit4ClassRunner.withAfterClasses 方法会出现神秘的 MultipleFailureException 错误消息

    为什么我的 Spring 测试设置失败并出现以下不太有用的错误消息 感谢所有建议 JUnit 输出 java lang NoClassDefFoundError org junit runners model MultipleFailure
  • Jquery/Ajax cookie pt2

    继上一个问题之后 上一个问题 https stackoverflow com questions 3916829 jquery ajax cookie 如果检测到 cookie 我似乎无法 触发 ajax 调用 cookie 肯定已设置 并
  • 表单中 PHP 复选框的内爆数组

    我已经查看了内爆数组的多个示例 但无法弄清楚为什么我看不到是否选中了多个复选框 我能否获得有关需要添加哪些代码以及在哪里添加的帮助 谢谢 PHP 代码 to email protected cdn cgi l email protectio
  • 离散连续概率分布

    认识到这可能是一个统计问题和编码问题 假设我使用 Distributions jl 创建了一个正态分布 using Distributions mydist Normal 0 0 2 有没有一种好的 直接的方法可以离散化这样的分布以获得 P
  • 使用包阴影符号

    例如 我有这个包定义 它遮蔽了 COMMON LISP LISTEN defpackage shadows use common lisp shadow listen export listen 然后我想使用另一个包中的这个包 比如说 de
  • 创建反应应用程序不拾取 .env 文件?

    我在用创建反应应用程序 https github com facebookincubator create react app引导我的应用程序 我添加了两个 env files env development and env product
  • 尝试将 GCC 特定的 asm goto 移植到 Clang

    我一直在尝试将一些 GNU 扩展转换为实际的标准 C 这样它就可以在 clang 上运行 知道标准 C 而不是 GNU 扩展 我有点不知所措 asm goto 1 STATIC KEY INITIAL NOP pushsection jum
  • Kendo 可排序:无法编辑可排序表内的文本输入

    我有以下可排序表 其中包含可排序行 http demos telerik com kendo ui sortable events http demos telerik com kendo ui sortable events tbody
  • 从 ElasticSearch 中的嵌套字段中删除对象

    ElasticSearch 中有没有一种方法可以删除嵌套字段数组中的一些对象 所以我有一个嵌套字段 它返回对象数组 我需要删除嵌套字段中的一些对象 是否可以在查询中这样做 或者我需要在我的代码中这样做 这些额外的嵌套文档是隐藏的 我们无法直
  • JLine 的编码问题

    Jline https github com jline jline3 issues是一个用于在用户按下之前在控制台拦截用户输入的模块Enter 它使用 JNA 或类似的魔法 我正在用它做一些实验 当我输入更多 异国情调 的 Unicode
  • 5.2 升级IllegalArgumentException:无法突出显示文件

    升级到 SonarQube 5 2 并将所有插件升级到当前版本后 我在运行分析时遇到以下异常 这是 CSS 插件还是核心 sonarqube 的问题吗 最终内存 9M 181M 信息 org sonar runner impl Runner
  • Java Json序列化过程中如何避免无限循环

    我使用休眠检索兄弟列表 public class Brother public int brotherId public string name public List