[英]Java - Normalize and serialize a nested tree structure with Jackon
所以我有一個雙向圖,看起來有點像下面這樣:
class Node {
private String name
private Node[] next;
private Node[] previous;
// ...
}
當我使用 Jackson 和以下注釋對其進行序列化時: JsonIdentityInfo
它工作得很好,我得到如下內容:
{
"@id": 1,
"name": "node1",
"next": [
{
"@id": 2,
"name": "node2",
"next": [
{
"@id": 3,
"name": "node3",
"next": [],
"previous": [2]
}
],
"previous": [1]
}
],
"previous": []
}
它序列化嵌套結構,但通過在第一次遇到節點時定義節點然后將其 id 用於所有其他引用來避免循環遞歸。
這很好,但我想知道是否有可能改為獲得類似以下的內容:
{
"nodes": [
{
"@id": 1,
"name": "node1",
"next": [2],
"previous": []
},
{
"@id": 2,
"name": "node2",
"next": [3],
"previous": [1]
},
{
"@id": 3,
"name": "node3",
"next": [],
"previous": [2]
}
]
}
完全移除嵌套並且每次都使用節點 id 的地方。
使用 Jackson 是否可以輕松/快速地實現這一目標? 因此我不需要定義一個完整的自定義序列化器/反序列化器
首先,您需要添加傑克遜的注釋:
class Node {
private String name
@JsonIdentityReference(alwaysAsId = true)
private Node[] next;
@JsonIdentityReference(alwaysAsId = true)
private Node[] previous;
// ...
}
然后加載/查詢所有節點作為列表並使用 Jackson 序列化它們,您將獲得所需的結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.