如何使用 jq 从 json 输出所有键和值?
how to output all the keys and values from json using jq?
我正在尝试从我的 json 文件中取出所有与值“data10=true”相匹配的数据,它这样做了,但只抓取了名称,我该怎么做才能将所有内容输出到我的 json 文件包含与“data10=true”相匹配的任何内容?
这就是我得到的 data=$(jq -c 'to_entries[] | select (.value.data10 == "true")| [.key, .value.name]' data.json )
顺便说一句,这是在我的 YAML 模板中,运行它作为 devops 中的管道。
详细要求不清楚,但希望您能够使用以下 jq 程序作为指南:
..
| objects
| select( .data10 == "true" )
| to_entries[]
| select(.key != "data10")
| [.key, .value]
这将递归地(感谢初始 ..
)检查输入中的所有 JSON 对象。
p.s.
如果您想根据 .data10 是 "true"
还是 true
进行选择,您可以将标准更改为 .data10 | . == true or . == "true"
。
jq 'to_entries | map(select(.value.data10=="true")) | from_entries' data.json
输入data.json,
false 值:
{
"FOO": {
"data10": "false",
"name": "Donald",
"location": "Stockholm"
},
"BAR": {
"data10": "true",
"name": "Walt",
"location": "Stockholm"
},
"BAZ": {
"data10": "true",
"name": "Jack",
"location": "Whereever"
}
}
输出:
{
"BAR": {
"data10": "true",
"name": "Walt",
"location": "Stockholm"
},
"BAZ": {
"data10": "true",
"name": "Jack",
"location": "Whereever"
}
}
基于:
我正在尝试从我的 json 文件中取出所有与值“data10=true”相匹配的数据,它这样做了,但只抓取了名称,我该怎么做才能将所有内容输出到我的 json 文件包含与“data10=true”相匹配的任何内容?
这就是我得到的 data=$(jq -c 'to_entries[] | select (.value.data10 == "true")| [.key, .value.name]' data.json )
顺便说一句,这是在我的 YAML 模板中,运行它作为 devops 中的管道。
详细要求不清楚,但希望您能够使用以下 jq 程序作为指南:
..
| objects
| select( .data10 == "true" )
| to_entries[]
| select(.key != "data10")
| [.key, .value]
这将递归地(感谢初始 ..
)检查输入中的所有 JSON 对象。
p.s.
如果您想根据 .data10 是 "true"
还是 true
进行选择,您可以将标准更改为 .data10 | . == true or . == "true"
。
jq 'to_entries | map(select(.value.data10=="true")) | from_entries' data.json
输入data.json, false 值:
{
"FOO": {
"data10": "false",
"name": "Donald",
"location": "Stockholm"
},
"BAR": {
"data10": "true",
"name": "Walt",
"location": "Stockholm"
},
"BAZ": {
"data10": "true",
"name": "Jack",
"location": "Whereever"
}
}
输出:
{
"BAR": {
"data10": "true",
"name": "Walt",
"location": "Stockholm"
},
"BAZ": {
"data10": "true",
"name": "Jack",
"location": "Whereever"
}
}
基于: