这是我的测试数据:
[
{
"id": "id-1",
"tags": {
"key": "name",
"value": "name-1"
}
},
{
"id": "id-2"
}
]
我正在尝试简化输出,以显示“名称”字段(如果存在),并始终显示 id。例如,这个脚本几乎可以工作:
~ $ cat testdata | jq '.[] | {id, name: .tags.value}'
{
"id": "id-1",
"name": "name-1"
}
{
"id": "id-2",
"name": null
}
当我尝试添加对不存在的 .keys 的防护并过滤我关心的“键”部分时,会发生以下情况:
~ $ cat testdata | jq '.[] | {id, name: (select(.tags.key == "name") | .tags.value)}'
{
"id": "id-1",
"name": "name-1"
}
我假设 {} 以某种方式以零长度数组而不是“null”结束。我应该使用什么来代替 |?我有什么误解?