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{
.....
}
}