[英]Flat JSON array into structured form in JAVA
我在將 JSON 的平面結構轉換為結構化形式時遇到了一些問題。 我們以這種形式從服務接收數據:
[
{'key':"Main1.del[1].x", "value": 0 },
{'key':"Main1.del[1].y", "value": 1 },
{'key':"Main1.del[2].x", "value": 5 },
{'key':"Main1.del[2].y", "value": 7 },
{'key':"Custom.stat[1].rev.max", "value": 45 },
{'key':"Custom.stat[1].rev.min", "value": -65 }
]
但是我們需要將其轉換為這種形式:
{
"Main1":{
"del":[
{
"x": 0,
"y": 1
},
{
"x": 5,
"y": 7
}
]
},
"Custom":{
"stat":[
{
"rev":{
"max":45,
"min":-65,
}
}
]
}
}
Java 中是否有針對此轉換的解決方案? 實際上,我們使用 Jackson 來序列化和反序列化 JSON 數據。
很抱歉,如果有相同的主題,我還沒有找到。
我不知道有任何圖書館為您做這件事,您必須自己編寫代碼:
您必須將鍵值解析為它們的元素,對於這些元素,您必須根據需要創建必要的結構,例如"Main1.del[1].x"
意味着您需要
Main1
字段(如果尚不存在,則創建該字段),.
運算符意味着Main1
是一個對象節點(如果它不存在,則創建它),Main1
一個del
字段(如果它不存在,則創建它),[1]
索引,這意味着del
是一個至少具有一兩個元素的數組節點(取決於基於零或基於一的數組索引 - 如果它不存在則創建它 - 如果它太短則擴展它) ,.
運算符意味着數組元素是一個對象節點(如果它不存在,則創建它),x
字段(如果尚不存在,則創建該字段)。 最后,將value
分配給最后一個節點。
為了創建結構化 JSON 對象,您還可以將 Jackson 與ObjectNode
、 ArrayNode
等類一起使用。 但是您也可能希望在不引入另一個中間 JSON 層的情況下動態地將其創建為 POJO。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.