一直在使用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-
我正在使用Jackson的ObjectMapper将POJO转换为JSON:
Idml idml = new Idml("test.idml");
ObjectMapper mapper = new ObjectMapper();
String JSONstring = mapper.writeValueAsString(idml);
IDMLlib类已编译,因此我无法对它们进行任何更改
有人知道一种方法吗?我仍然可以使用java对象IDMLlib返回,而不必创建自己的对象?
编辑:
似乎有许多对“根”和“父”的引用。因此,基本上我要问的是,是否有人知道如何在不修改对象的情况下序列化对象。
如果引用是一个简单的父/子类型的东西(听起来确实如此),只需使用注释:
// on parent object
@JsonManagedReference
public ChildOb child;
// on child object
@JsonBackReference ParentOb parent;
而且杰克逊会把东西序列化,这样就只写出‘孩子’(parent不是);当反序列化时,它重新链接东西。
当 Jackson 由于某些原因无法访问对象的某个属性,或者无法序列化其某个属性时,Jackson 倾向于抛出这种异常。
如果没有在要序列化的对象上指定任何注释,Jackson将尝试通过深入递归来序列化所有内容。
你有没有可能告诉杰克逊忽略一些属性或领域?
我有过由Hibernate初始化Pojo的经验,我应该将“@JacksonIgnore”添加到HibernateLazy加载的每个属性中。
我试图使用混合序列化集合,但Jackson不会保存类型信息。这是一个基本测试,说明会发生什么: 如何在第一个输出上实现输出?
我目前正在将一些代码从Jackson1.x迁移到Jackson2.5json映射器,遇到了一个1.x中没有的问题。 这是设置(参见下面的代码): 接口IPET 类Dog实现IPET IPET使用@jsonTypeInfo和@jsonSubtypes进行注释 类Human具有一个类型为IPet的属性,该属性使用@JSONSerialize(using=CustompetSerializer.clas
我尝试反序列化一个巨大的API负载。这个有效负载包含的字段比我需要的要多,因此我正在使用。但是,在某些情况下,反序列化会失败,并显示错误消息: 我找到了解决方案,建议使用 我试过这个。但这于事无补。此外,我的结果数据不是一个单一的值数组。它实际上包含两个值——因此解决方案无论如何都不会相加。 以下是反序列化的目标类。 下面是我测试它的单元测试: 这是我想要反序列化的有效负载
我正在尝试使用Jackson将对象序列化到JSON,以便字段名基于一种类型的字段。 我有和这个线程中的OP一样的问题: 然而,这并不奏效。 我正在使用Wildfly 10.1 Final null CustomSerializer类: > 将注释添加到object字段,因此我的Response类现在如下所示: 当我测试它时,我得到了以下json对象: 现在,我尝试了本博客中的建议,并在我的Resp
考虑以下代码片段,以获取/提交collections.synchronizedSet到/从Hazelcast: 在此代码运行几次之后(不确定有多少次,也不确定为什么),在试图从Hazelcast(上面标记的)获取集合时,会触发以下操作: