Итак, у меня есть двунаправленный график, который выглядит примерно так:
class Node {
private String name
private Node[] next;
private Node[] previous;
// ...
}
Когда я сериализую его с помощью Джексона и следующей аннотации: JsonIdentityInfo
он работает нормально, и я получаю что-то примерно так:
{
"@id": 1,
"name": "node1",
"next": [
{
"@id": 2,
"name": "node2",
"next": [
{
"@id": 3,
"name": "node3",
"next": [],
"previous": [2]
}
],
"previous": [1]
}
],
"previous": []
}
Где он сериализует вложенную структуру, но избегает циклической c рекурсии, определяя узел при первом обнаружении, а затем используя его идентификатор для всех других ссылок.
Это хорошо, но мне было интересно, можно ли вместо этого получить что-то вроде следующего:
{
"nodes": [
{
"@id": 1,
"name": "node1",
"next": [2],
"previous": []
},
{
"@id": 2,
"name": "node2",
"next": [3],
"previous": [1]
},
{
"@id": 3,
"name": "node3",
"next": [],
"previous": [2]
}
]
}
Где вложение полностью удалено и каждый раз используется идентификатор узла.
Возможно ли добиться этого легко / быстро с Джексоном? при этом мне не нужно определять полный настраиваемый сериализатор / десериализатор