Java 具有自引用的节点类上的jackson无限递归

Java 具有自引用的节点类上的jackson无限递归,java,json,tree,jackson,Java,Json,Tree,Jackson,我在一个类上使用jackson writeValueAsString时遇到了一个问题,该类作为一个节点类,始终引用父类和子类 public Node<T>{ private T key; private List<Node<T>> children; private Node<T> parent; } 在我的业务逻辑中,这一切都很好,但我希望输出json 我在地图上有以下设置 ObjectMapper mappe

我在一个类上使用jackson writeValueAsString时遇到了一个问题,该类作为一个节点类,始终引用父类和子类

public Node<T>{
     private T key;

     private List<Node<T>> children;

     private Node<T> parent;
}
在我的业务逻辑中,这一切都很好,但我希望输出json

我在地图上有以下设置

ObjectMapper mapper = new ObjectMapper();
    mapper.configure(SerializationFeature.FAIL_ON_SELF_REFERENCES, false);
    String json = "";
    try {
       json = mapper.writeValueAsString(nodeImpl);
    } catch (Exception ex) {
       // logging
    }
    return json;
由于这个对象,我得到了无限递归错误

com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: io.tychon.common.model.Node["children"]->java.util.ArrayList[0]->io.moobyworld.model....
因此,我尝试添加

@JsonManagedReference
private Node<T> parent;

@JsonBackReference
private List<Node<T>> children;
@JsonManagedReference
私有节点父节点;
@JsonBackReference
私人名单儿童;
没有帮助,所以我尝试切换托管引用和反向引用,因为子对象是一个集合。我甚至不需要json中的parent属性,所以我也尝试了

@JsonIgnore
private Node<T> parent;
@JsonIgnore
私有节点父节点;

我所能找到的似乎都无助于这种情况。非常感谢您的帮助

您使用的是哪个版本的
Jackson
?您能否创建一个不适合您的简单示例?我只使用了一个注释
@JsonBackReference private Node parent
版本为
2.9.9
,运行良好:
{“key”:“ROOT”,“children”:[{“key”:“C0”,“children”:[]},{“key”:“C1”,“children”:[]}]}
2.10…我在父节点上尝试了该注释,但仍然会产生相同的错误?您能创建一个简单的
节点结构并尝试一下吗?也许你使用了一些复杂的类型,这就是为什么它不适合你。
@JsonIgnore
private Node<T> parent;