我有这个输入数据:
[
{
"attributes": {
"created": "2021-10-18T12:02:39+00:00",
"enabled": true,
"expires": null,
"notBefore": null
},
"contentType": null,
"id": "https://kjkljk./secrets/-/1",
"managed": null,
"name": "pw",
"tags": {}
},
{
"attributes": {
"created": "2021-10-18T12:06:16+00:00",
"enabled": true,
"expires": null,
"notBefore": null
},
"contentType": "",
"id": "https://kjklj./secrets/-/2",
"managed": null,
"name": "pw",
"tags": {}
}
]
Run Code Online (Sandbox Code Playgroud)
我需要使用 jq 将 id 值提取到一个新数组中,其中启用设置为 true。这是我到目前为止所拥有的:
.[] | select(any(.attributes; .enabled== true)) | {id}
Run Code Online (Sandbox Code Playgroud)
但它只会导致这样的结果:
{
"id": "https://kjkljk./secrets/-/1"
}
{
"id": "https://kjklj./secrets/-/2"
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能把这两个对象变成一个字符串数组呢?
[
"id": "https://kjkljk./secrets/-/1",
"id": "https://kjklj./secrets/-/2"
]
Run Code Online (Sandbox Code Playgroud)
pmf*_*pmf 22
使用map而不是.[]保留数组:
map(select(any(.attributes; .enabled)) | {id})\nRun Code Online (Sandbox Code Playgroud)\nmap(select(any(.attributes; .enabled)) | {id})\nRun Code Online (Sandbox Code Playgroud)\n\n请注意,这会生成一个对象数组[{\xe2\x80\xa6},{\xe2\x80\xa6}],我相信这就是您所要求的,尽管在您想要的输出中您缺少大括号{ }。要制作“字符串数组”,请使用.id而不是{id}像这样
map(select(any(.attributes; .enabled)) | .id)\nRun Code Online (Sandbox Code Playgroud)\n[\n {"id": "https://kjkljk./secrets/-/1"},\n {"id": "https://kjklj./secrets/-/2"}\n]\nRun Code Online (Sandbox Code Playgroud)\n\n(此外,您可以使用.enabled代替.enabled == true)
就像是:
$ jq '[.[] | select(.attributes.enabled) | .id]' input.json
[
"https://kjkljk./secrets/-/1",
"https://kjklj./secrets/-/2"
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38705 次 |
| 最近记录: |