我有一個 JSON 檔案
js.json
{
"id": "json",
"description": "test",
"packages": [
{
"Group": "group1",
"Name": "name1",
"Version": "1.0.0"
},
{
"Group": "group2",
"Name": "name2",
"Version": "1.0.0"
},
{
"Group": "group3",
"Name": "name3",
"Version": "1.0.0"
},
{
"Group": "group5",
"Name": "name5",
"Version": "1.0.0"
}
]
}
它在 .packages 陣列中有 4 個元素。我想在陣列中添加第五個元素“group4”以獲得
{
"id": "json",
"description": "test",
"packages": [
{
"Group": "group1",
"Name": "name1",
"Version": "1.0.0"
},
{
"Group": "group2",
"Name": "name2",
"Version": "1.0.0"
},
{
"Group": "group3",
"Name": "name3",
"Version": "1.0.0"
},
{
"Group": "group4",
"Name": "name4",
"Version": "1.0.0"
},
{
"Group": "group5",
"Name": "name5",
"Version": "1.0.0"
}
]
}
如果我使用
jq '.packages[3] |= . {"Group":"group4", "Name":"name4", "Version":"1.0.0"}' jq.json
{
"id": "json",
"description": "test",
"packages": [
{
"Group": "group1",
"Name": "name1",
"Version": "1.0.0"
},
{
"Group": "group2",
"Name": "name2",
"Version": "1.0.0"
},
{
"Group": "group3",
"Name": "name3",
"Version": "1.0.0"
},
{
"Group": "group4",
"Name": "name4",
"Version": "1.0.0"
}
]
}
我丟失了 group5 元素。是否可以在不丟失前一項的情況下添加一項?我知道我可以保存丟失索引的輸出并將它們與新索引一起插入,但這似乎是錯誤的
uj5u.com熱心網友回復:
通過|=將.packages欄位重新定義為由前三個元素.[:3]、新元素[{…}]和其余元素組成的新陣列來更新該欄位.[3:]。從技術上講,我們通過將三個陣列拼接在一起來構建一個陣列 。
jq '.packages |= .[:3] [{Group: "group4", Name: "name4", Version: "1.0.0"}] .[3:]'
{
"id": "json",
"description": "test",
"packages": [
{
"Group": "group1",
"Name": "name1",
"Version": "1.0.0"
},
{
"Group": "group2",
"Name": "name2",
"Version": "1.0.0"
},
{
"Group": "group3",
"Name": "name3",
"Version": "1.0.0"
},
{
"Group": "group4",
"Name": "name4",
"Version": "1.0.0"
},
{
"Group": "group5",
"Name": "name5",
"Version": "1.0.0"
}
]
}
演示
uj5u.com熱心網友回復:
你想要.packages |= . [ { ... } ],它將一個元素(好吧,整個陣列,真的)附加到packages陣列,而不是.packages[3] |= { ... },它將一些鍵添加/合并到物件中.packages[3]。
uj5u.com熱心網友回復:
您希望將記錄插入到陣列中以使其保持排序。最好和最簡單的解決方案是簡單地附加記錄而不是對陣列進行排序。這具有不需要知道插入位置的優點。
.packages |= (
. [ { "Group": "group4", "Name": "name4", "Version": "1.0.0" } ] |
sort_by( .Group )
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/378763.html
上一篇:在bash中重新分配$1的值
下一篇:移動文本塊
