gpt4 book ai didi

java - 尝试使用 Jackson 从 Idml 序列化为 Json 时出现 StackOverflowError

转载 作者:行者123 更新时间:2023-12-01 05:05:49 25 4
gpt4 key购买 nike

一直在使用IDMLlib将 IDML 文件加载到 POJO,但是当我尝试使用 Jackson JSON 将生成的 java 对象序列化为 JSON 时,我总是陷入无限递归的麻烦。

Caused by JsonMappingException: Infinite recursion (StackOverflowError)
(through reference chain:
de.fhcon.idmllib.api.elements.preferences.Preferences["layoutAdjustmentPreference"]
->de.fhcon.idmllib.api.elements.preferences.LayoutAdjustmentPreference["parent"]
... etc

->> 539 | serializeFields in com.fasterxml.jackson.databind.ser.std.BeanSerializerBase

解析过程中多次发生这种情况。
Idml.document -> Document.root -> Idml.document -> Document.root 是类似的。

我正在使用 Jackson 的 ObjectMapper 将 POJO 转换为 JSON:

Idml idml = new Idml("test.idml");
ObjectMapper mapper = new ObjectMapper();
String JSONstring = mapper.writeValueAsString(idml);

IDMLlib 类已编译,因此我无法对它们进行任何更改。
有人知道我仍然可以使用 IDMLlib 返回的 java 对象而不必创建自己的方法吗?

编辑:
整个过程中似乎多次提到“根”和“父”。所以基本上我要问的是是否有人知道如何能够序列化对象而不修改它

最佳答案

当由于某些原因,Jackson 无法访问对象的属性之一,或者无法序列化其属性之一时,Jackson 往往会抛出此类异常。

如果您没有在要序列化的对象上指定任何注释,Jackson 会尝试通过深入递归来序列化所有内容。

您是否有机会告诉 Jackson 忽略某些属性或字段?

我有过 Hibernate 初始化 Pojo 的经历,我应该将“@JacksonIgnore”添加到我使用 Hibernate 延迟加载的每个属性中。

关于java - 尝试使用 Jackson 从 Idml 序列化为 Json 时出现 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12690376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com