json - 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
}
预期结果:
{
"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
}
如果有人能帮助我,我将不胜感激。我用 -S 和 -s 用 sort_by() 尝试了 jq,但是这个例子太复杂了,我无法根据我目前对 jq 的经验来弄清楚。十分感谢!
解决方案
你可以做:
jq '.link[].attributes|=sort_by(.name)'
获取与 匹配的|=
所有路径.link[].attributes
,即每个“属性”数组,并将过滤器应用于每个路径sort_by(.name)
,其他所有内容保持不变。
推荐阅读
- laravel - 选择器的 Laravel 黄昏问题
- r - 希伯来语 R 代码转换为问号
- json - jq substr() 相当于格式化一个值
- python - 在 Python 中连接整个字符串之前和之后
- reactjs - 从 API 检索数据的简单函数不返回数据
- reactjs - 如何导入和调用使用 redux connect 及其函数的反应纯函数?(只有 React 功能组件没有类)
- ios - 使用 URL 将图像加载到 UIButton 不起作用
- java - 用Java从文本文件中的一行读取特定数据到相应的数组
- javascript - 使用 html 提交所选选项的任何文本
- amazon-web-services - Amazon HTTP API 网关无法通过 VPC 链接工作