您的位置:首页 > Web前端 > JavaScript

解决json序列化有多对一和多对多关系的对象时造成死循环的问题

2017-01-04 09:39 826 查看
json序列化的对象中存在双向引用会导致的无限递归(infinite recursion)问题。
使用@JsonBackReference标记在有多对一或者多对多关系的属性上即可解决这个问题,举例:
@JsonBackReference@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "market_id")private Market market;
ps:
@JsonManagedReference:标记的属性会被序列化,序列化时属性默认都是会被序列化的。反序列(deserialization,即json数据转换为对象)时,如果没有@JsonManagedReference,则不会自动注入@JsonBackReference标注的属性。@JsonIgnore:直接忽略某个属性,以断开无限递归,序列化或反序列化均忽略。当然如果标注在get、set方法中,则可以分开控制,序列化对应的是get方法,反序列化对应的是set方法。在父子关系中,当反序列化时,@JsonIgnore不会自动注入被忽略的属性值(父或子),这是它跟@JsonBackReference和@JsonManagedReference最大的区别。 

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐