我试图将java对象转换为json字符串,并且它因StackoverflowError而失败,可能是因为对象的子对象中有一个无限循环/循环。
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:152)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:505)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:639)
Caused by: java.lang.StackOverflowError
at java.lang.ClassLoader.defineClass1(Native Method)
...
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:655)
我试图编码的对象是我无法控制的类的实例。我只能继承它。我想我应该可以在犯罪领域添加@JsonIgnore
(我的意思是相应的重写getter方法),但我不知道它是哪一个。这些是包含数百个字段和子对象的巨大类。
有没有一种简单的方法可以知道哪个字段导致json编码中的无限循环?
PS:对于那些熟悉它的人来说,它是Hl7 HAPI FHIR框架的Patient
类。我知道有一个自定义的json序列化器随附该框架,但我需要使用更通用的jackson来利用它的一些功能。
非常感谢