Json序列化带来的好处之一就是,可已经将复杂的对象转成json对象,传入前台。
例如: Ajax 请求,返回函数 data.theClass.user.username . 直接在js调用。
当时当我们遇到多对一,或者多对多的关系,对象映射无限制,
json 序列化时就会一直无限死循环的去序列化
例: theClass ---> User ---> theClass ---> User ----->theClass ......就会死循环了。
以下方式可以实现json只序列化一个循环,不会无限制序列化。
注意:这里格式是固定的,只能在set、get上注解 。其他方式我试验好像不可以。
相对父类的注解为 @JsonManagedReference ;
相对子类的注解为 @JsonBackReference ;
/**
*
* 班级 (父类>上级?)
*/
public class TheClass{
private List<User> users;
@JsonManagedReference
public User getUser{
.....
}
@JsonManagedReference
public void setUser{
.....
}
}
/**
*
* student (子类>下级?)
*/
public class User{
private TheClass tcls;
@JsonBackReference
public TheClass getTcls{
.....
}
@JsonBackReference
public void setTcls{
.....
}
}
本文探讨了JSON序列化过程中遇到的多对一或多对多关系导致的对象映射无限循环问题,并提供了使用@JsonManagedReference和@JsonBackReference注解的方法来实现JSON只序列化一个循环,避免无限循环序列化。
2173

被折叠的 条评论
为什么被折叠?



