使用 jq 获取值为 true 的 id

use*_*211 1 bash select json jq

我试图循环遍历 json 文件中的每个对象并获取idwhere trunkis的名称true。现在我只获取id每个对象的 。

json 文件:

[
  {
    "id": "bmw",
    "color": "blue",
    "trunk": true,
    "seat": false
  },
  {
    "id": "merceredes",
    "color": "blue",
    "trunk": false,
    "seat": false
  }

]
Run Code Online (Sandbox Code Playgroud)

bash脚本:

/bin/bash
for id in `jq -r -c .[] file.json`; do
  echo $id | jq -r .id
done
Run Code Online (Sandbox Code Playgroud)

pea*_*eak 6

您尚未\xe2\x80\x99t 指定所需的精确输出形式,但以下说明了解决该问题的一种方法:

\n\n
jq '.[] | select(.trunk == true) | .id' file.json\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果 .trunk 是布尔值,您可以将select参数简化为.trunk.

\n