如何在Java中使用Json序列化时避免无限循环
我使用hibernate检索兄弟列表
public class Brother { public int brotherId; public string name; public List brothers; public Brother() { brothers = new ArrayList(); } //Getter Setter }
Hibernate是在兄弟列表中使用lazy select配置的,这在Java端工作,但问题是当我想将一个Brother对象序列化为JSON时。
I've got org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError)
例如布莱恩可以让马克作为一个反面的兄弟……
我怎么解决呢? 有没有办法表明jackson图书馆的最大递归数?
我的代码,真的很简单。
Brother brother = this.myservice.getBrother(4); ObjectMapper mapper = new ObjectMapper(); System.out.println(mapper.writeValueAsString(brother));
因循环参考而产生问题。
从
Jackson 1.6
您可以使用两个注释来解决无限递归问题,而不会在序列化期间忽略getter / setter: @JsonManagedReference和@JsonBackReference 。
请参阅此处了解更多
- 例外:无法解析配置:hibernate.cfg.xml
- Spring 3 MVC Hibernate 3.5.4 hibernateTemplate没有关闭连接(非事务性)
- 如何正确地将特定对象的列表转换为Gson?
- Hibernateexception处理
- 如何在hibernate实体中更改列名?
- JPA孤儿删除不适用于OneToOne关系
- 在hibernate中实现结果分页(获取总行数)
- JPA – @Column(unique = true) – 具有“独特”属性的真正意义何在?
- Spring JPA(Hibernate)没有类型的限定bean:javax.persistence.EntityManagerFactory