这是Groovy中的嵌套对象:
class A{
B b
}
class B{
A a
}
A a = new A()
B b = new B()
a.b = b
b.a = a
然后在调用new JsonBuilder(a).toString()
时发生StackOverflowError。
我们是否有JsonBuilder的任何配置?或者这样做是不可能的。顺便说一句,嵌套对象来自Hibernate。
谢谢!
答案 0 :(得分:1)
根据问题的描述,您似乎正在处理这样的数据:
DB(数据) - > YourApp(POJO) - >外部(JSON)
但是,从设计的角度来看,我认为公开内部数据库数据模型以供外部使用似乎不是正确的做法。由于许多原因,使用新模型进行序列化可能会更好:
答案 1 :(得分:0)
如果你在Hibernate中进行双向关系,你可以让对象保持对另一个(例如id)的引用,而不是引起这个问题的实际对象。
答案 2 :(得分:0)
根据给定的方案和您得到的错误,可以得出结论JsonBuilder
无法处理循环引用(在您的对象结构中 >)。我不确定您使用的是哪个库,但如果可用,您可以使用源代码进行交叉检查。
作为替代方案,我建议探索其他处理循环引用的库。查看Jackson
已知的handle cyclic references。