Jackson序列化对象时无限递归错误Infinite recursion的解决办法

最近在项目中,实现对象的序列化和反序列化时用到了Jackson,但是在junit单元测试的时候却出现了如下错误:

org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError),

根据错误提示中的infinite recursion知道是无线递归错误导致了堆栈溢出,查找代码后发现,由于代码中订单实体类Order内包含了订单详情OrderDetail的对象集合List<OrderDetail>,而OrderDetail内也含有订单Order对象,因此订单和订单详情是一对多双向关联的关系,在Jackson序列化List<OrderDetail>属性时会无循环下去,导致stackoverflow。解决办法:

1. 在实体类上加入注释 @JsonIgnoreProperties(value={""}),value内为要忽略的属性集

2. 在属性或方法上加入注释@JsonIgnore

再次运行程序,测试通过。

在对象的序列化上选择自己需要的属性就可,对于不需要的属性就可以通过加入注解的方式忽略

猜你喜欢

转载自blog.csdn.net/cfydaniel/article/details/38820271
今日推荐