我需要使用jq
对一些元素进行排序的帮助,其中每个元素都包含一个嵌套的元素
tags
个元素数组。我输入的JSON看起来像这样:
{
"result": [
{
"name": "ct-1",
"tags": [
{
"key": "service_name",
"value": "BaseCT"
},
{
"key": "sequence",
"value": "bb"
}
]
},
{
"name": "ct-2",
"tags": [
{
"key": "service_name",
"value": "BaseCT"
},
{
"key": "sequence",
"value": "aa"
}
]
}
]
}
我想使用嵌套sequence
数组中tags
标签的值进行排序,以使输出看起来像这样:
{
"result": [
{
"name": "ct-2",
"tags": [
{
"key": "service_name",
"value": "BaseCT"
},
{
"key": "sequence",
"value": "aa"
}
]
},
{
"name": "ct-1",
"tags": [
{
"key": "service_name",
"value": "BaseCT"
},
{
"key": "sequence",
"value": "bb"
}
]
}
]
}
我尝试了以下jq
命令:
$ jq '.result |= ([.[] | .tags[] | select(.key == "sequence") | .value] | sort_by(.))' input.json
但是我得到以下结果:
{
"result": [
"aa",
"bb"
]
}
如果您知道如何处理这种情况,请告诉我。
答案 0 :(得分:1)
from_entries
将一组键值对转换为一个对象,您可以将其与sort_by
一起使用,如下所示:
.result |= sort_by(.tags | from_entries | .sequence)