мой класс Node
public class Node<T> {
private T data;
private Node<T> parent;
private HashMap<Node<T>, String> children = new HashMap<>();
}
мой государственный класс
public class State {
private String name;
private Boolean endState;
}
мое дерево класс
public class Tree<T> {
private Node<T> root;
public Tree() {
}
public Tree(T rootData) {
root = new Node<T>();
root.setData(rootData);
}
public Node<T> getRoot() {
return root;
}
Мой основной класс
public class Main {
public static void main(String[] args) throws IOException {
Tree<State> stateMachine = new Tree<>(new State("q1", false));
Node<State> q2 = new Node<>(new State("q2", true), stateMachine.getRoot());
stateMachine.getRoot().addChild(q2, "a");
stateMachine.getRoot().addChild(stateMachine.getRoot(), "a");
ByteArrayOutputStream os = new ByteArrayOutputStream();
new ObjectMapper().writer().writeValue(os, stateMachine);
String json = os.toString();
os.close();
System.out.println(json);
}
}
вывод, который я получаю
{
"root":{
"data":{
"name":"q1",
"endState":false
},
"parent":null,
"children":{
"entity.Node@7adf9f5f":"a",
"entity.Node@85ede7b":"a"
}
}
}
и я не уверен, как избежать бесконечной рекурсии и полностью сериализовать / десериализовать мой объект.