Java 无法使用jackson序列化双向关系
我正在尝试序列化一个对象,以便通过套接字发送它。 但问题是,当我序列化对象时,它将陷入无限递归。 我使用中提到的jacksonJava 无法使用jackson序列化双向关系,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我正在尝试序列化一个对象,以便通过套接字发送它。 但问题是,当我序列化对象时,它将陷入无限递归。 我使用中提到的jackson@JsonBackReference和@JsonManagedReference注释解决了递归问题,但问题是,它仍然无法序列化子对象。甚至当我使用@JsonIgnore时,它也不会完全序列化字段,所以当我在服务器上反序列化它时,我会有一个空字段 以下是我的课程: public class Repository { public String name; @
@JsonBackReference
和@JsonManagedReference
注释解决了递归问题,但问题是,它仍然无法序列化子对象。甚至当我使用@JsonIgnore
时,它也不会完全序列化字段,所以当我在服务器上反序列化它时,我会有一个空字段
以下是我的课程:
public class Repository {
public String name;
@JsonIgnore
public ArrayList<UserRole> contributors = new ArrayList<UserRole>();
public User self;
@JsonManagedReference
public ArrayList<FileInfo> files = new ArrayList<FileInfo>();
public RepositoryType repositoryType;
@JsonIgnore
public String path;
}
public class FileInfo {
private Date addedDate;
private String path;
private String name;
@JsonBackReference
public Repository relatedRepository; //this field wont be serialized
}
公共类存储库{
公共字符串名称;
@杰索尼奥雷
public ArrayList contributors=new ArrayList();
公共用户自身;
@JsonManagedReference
public ArrayList files=new ArrayList();
公共回购类型回购类型;
@杰索尼奥雷
公共字符串路径;
}
公共类文件信息{
添加私人日期;
私有字符串路径;
私有字符串名称;
@JsonBackReference
public Repository relatedRepository;//此字段不会序列化
}
我已经注释了不会序列化的字段。如果我希望它们都被序列化,我应该怎么做?有什么方法可以做到这一点吗?@JsonBackReference:
链接的处理方式使得使用此注释注释的属性不会序列化;在反序列化过程中,它的值被设置为具有“托管”(正向)链接的实例。
那么我猜我正确地使用了它?!嗯,你可能想在尝试之前先阅读文档,直到它们看起来有效,但是是的。我已经阅读了一些文档,但找不到任何对我的案例有用的东西。有没有其他方法可以将它们都序列化?这在逻辑上是不可能的(您认为结果结构应该是什么样子的?)。您所能做的最好的事情就是有一个引用标记,这样您就知道如何再次正确地反序列化—这就是它所做的。