我正在尝试使用 jq 处理一些 JSON。具体来说,我想要一个基于其子值的特定键。给定示例:
{
"foo": {"primary": true, "blah": "beep"},
"bar": {"primary": false, "blah": "narf"},
"baz": {"primary": false, "blah": "poink"},
}
我想要字符串“foo”,因为这是其子值“primary”为 true 的键。(由于生成 JSON 的原因,我可以保证只有一个条目的primary = true。)
到目前为止,我能做到的最好的事情是:
jq -r '.[] | select(.primary == true)'
但这返回“foo”的值,而不是字符串“foo”本身。到目前为止,翻阅手册我还没有找到专门获取密钥的方法。
您可以提供任何指示吗?
您需要将对象“拆分”为条目数组,例如
[
{
"key": "foo",
"value": {
"primary": true,
"blah": "beep"
}
}
//...
]
然后你可以用过滤.value.primary
并将结果映射为.key
:
to_entries | map(select(.value.primary) | .key)
Returns:
[
"foo"
]
或者只获取数组的第一项:(感谢@nbari)
to_entries | map(select(.value.primary) | .key)[0]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)