我有一个Spring REST服务,其API控制器返回一个对象A
。我得到以下例外:
Could not write content: Infinite recursion (StackOverflowError) (through reference chain: com.company.product.platform.service.contract.A[\"b\"]->com.company.product.data.B[\"c\"]);
以下是对象定义
public class A {
private final B b;
private final DateTime time;
private final String s;
private final long l;
}
类B
,C
和D
是第三方库的一部分。
public class B{
private final C c;
}
public class C implements Iterable<D>{
private final Map<String, D> props;
}
我不太明白为什么我会遇到无限循环。非常感谢解释/解决方案。
更新
我通过进行一些修改使序列化工作。以下是我所做的解释:
我B
成为A
成员的唯一原因是我可以访问作为C
成员的道具地图。因此,我创建了道具地图的副本,并使其成为A
的成员。 A
现在看起来像:
public class A {
private final Map<String, D> props;
private final DateTime time;
private final String s;
private final long l;
}
这很好用。我觉得这会把问题缩小到B或C.当它实现Iterable
时,C似乎更有趣。序列化实现Iterable
的类是否有问题?