解决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最大的区别。
相关文章推荐
- EntityFramework中Json序列化的循环引用问题解决--Newtonsoft.Json
- 解决.Net MVC EntityFramework Json 序列化循环引用问题.
- 解决json-lib的一些序列化循环处理问题
- 问题:在程序中保存数据到索引库,发生异常jackson数据转换异常,造成死循环栈溢出 解决@JsonIgnore注解
- spring mvc 解决json 死循环序列化问题
- EntityFramework中Json序列化的循环引用问题解决--Newtonsoft.Json
- 使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题
- EntityFramework中Json序列化的循环引用问题解决--Newtonsoft.Json
- 解决图片对象不能json序列化问题:<ImageFieldFile: image/background_IXSZChD.jpg> is not JSON serializable
- 解决hibernate双向关系造成的一方重复执行SQl,或者死循环的问题
- hibernate+spring mvc, 解决hibernate 对象懒加载 json序列化问题
- 解决.Net MVC EntityFramework Json 序列化循环引用问题.
- 解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题(Newtonsoft.Json)
- Atiitt 对象转换json 序列化规范 Java 循环引用的解决 设置序列化层次深度 去除不必的属性 太长不方便月度 jsonObject.remove("num1"); Prety fo
- extjs解决bean转换为json对象的死循环的问题
- 解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json
- 自定义JsonResult解决 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
- python类中显示重写__del__方法,引起循环引用的对象无法释放,造成垃圾泄露问题
- 采用CXF解决webservice循环引用对象的问题
- C# DataTable 对象转换成Json时 出现 序列化类型为“System.Reflection.Module”的对象时检测到循环引用 的错误!