如何用jq提取一个基于其子值的key?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用jq提取一个基于其子值的key?相关的知识,希望对你有一定的参考价值。

我正试图用jq处理一些JSON。 具体来说,我想要一个特定的键,基于它的子值。 例子,给定。


  "foo": "primary": true, "blah": "beep",
  "bar": "primary": false, "blah": "narf",
  "baz": "primary": false, "blah": "poink",

我想要 "foo "这个字符串 因为这个键的子值 "primary "是true (我可以保证只有一个词条的primary = true, 这是因为生成JSON的原因)

到目前为止,我所能做到的最好的是。

jq -r '.[] | select(.primary == true)'

但它返回的是 "foo "的值,而不是字符串 "foo "本身。 翻阅手册,到目前为止,我还没有找到专门抓取键的方法。

您有什么指点吗?

答案

你需要将你的对象 "拆分 "成一个条目数组,例如:"foo": "blah": "beep", "bar": "primary": false, "..."。

[
  
    "key": "foo",
    "value": 
      "primary": true,
      "blah": "beep"
    
  
  //...
]

然后你可以用 .value.primary 并将结果与 .key:

to_entries | map(select(.value.primary)  | .key)

返回。

[
  "foo"
]

或者只得到数组中的第一个项目。(谢谢 @nbari)

to_entries | map(select(.value.primary)  | .key)[0]

以上是关于如何用jq提取一个基于其子值的key?的主要内容,如果未能解决你的问题,请参考以下文章

如何用vlookup不提取第一列内容,而提取最后一列的数据?或用其他函数也行!

如何用 JQ 填充数字?

如何用jq获取一个div内部所有input[type='text']的值

如何用Keras自定义层?

如何用Perl对Excel的数据进行提取并分析

left设置的是百分比,如何用jq获取该百分比,而不是具体的像素