Fut*_*eur 5 sorting json key jq
给定以下 JSON(为了示例而过于简化),我需要按键的值对键进行排序。在这种情况下,顺序应该是 id > name > type。
{
"link": [{
"attributes": [{
"value": "ConfigurationElement",
"name": "type"
}, {
"value": "NAME1",
"name": "name"
}, {
"value": "0026a8b4-ced6-410e-9213-e3fcb28b3aab",
"name": "id"
}
],
"href": "href1",
"rel": "down"
}, {
"attributes": [{
"value": "0026a8b4-ced6-410e-9213-k23g15h2u1l5",
"name": "id"
}, {
"value": "ConfigurationElement",
"name": "type"
}, {
"value": "NAME2",
"name": "name"
}
],
"href": "href2",
"rel": "down"
}
],
"total": 2
}
Run Code Online (Sandbox Code Playgroud)
预期结果:
{
"link": [{
"attributes": [{
"value": "0026a8b4-ced6-410e-9213-e3fcb28b3aab",
"name": "id"
}, {
"value": "NAME1",
"name": "name"
}, {
"value": "ConfigurationElement",
"name": "type"
}
],
"href": "href1",
"rel": "down"
}, {
"attributes": [{
"value": "0026a8b4-ced6-410e-9213-k23g15h2u1l5",
"name": "id"
}, {
"value": "NAME2",
"name": "name"
}, {
"value": "ConfigurationElement",
"name": "type"
}
],
"href": "href2",
"rel": "down"
}
],
"total": 2
}
Run Code Online (Sandbox Code Playgroud)
如果有人能帮助我,我将非常感激。我尝试了 jq 和 -S 以及 -s 和 sort_by(),但是这个例子对于我来说太复杂了,无法以我目前使用 jq 的经验来弄清楚。万分感谢!
Wee*_*ble 10
你可以做:
jq '.link[].attributes|=sort_by(.name)'
Run Code Online (Sandbox Code Playgroud)
获取|=与 匹配的所有路径.link[].attributes,即每个“属性”数组,并将过滤器应用于sort_by(.name)每个路径,其他所有内容保持不变。