最近在项目中,实现对象的序列化和反序列化时用到了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
再次运行程序,测试通过。
在对象的序列化上选择自己需要的属性就可,对于不需要的属性就可以通过加入注解的方式忽略