Java 无法使用jackson序列化双向关系

Java 无法使用jackson序列化双向关系,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我正在尝试序列化一个对象,以便通过套接字发送它。 但问题是,当我序列化对象时,它将陷入无限递归。 我使用中提到的jackson@JsonBackReference和@JsonManagedReference注释解决了递归问题,但问题是,它仍然无法序列化子对象。甚至当我使用@JsonIgnore时,它也不会完全序列化字段,所以当我在服务器上反序列化它时,我会有一个空字段 以下是我的课程: public class Repository { public String name; @

我正在尝试序列化一个对象,以便通过套接字发送它。 但问题是,当我序列化对象时,它将陷入无限递归。 我使用中提到的jackson
@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:
链接的处理方式使得使用此注释注释的属性不会序列化;在反序列化过程中,它的值被设置为具有“托管”(正向)链接的实例。
那么我猜我正确地使用了它?!嗯,你可能想在尝试之前先阅读文档,直到它们看起来有效,但是是的。我已经阅读了一些文档,但找不到任何对我的案例有用的东西。有没有其他方法可以将它们都序列化?这在逻辑上是不可能的(您认为结果结构应该是什么样子的?)。您所能做的最好的事情就是有一个引用标记,这样您就知道如何再次正确地反序列化—这就是它所做的。