使用 any() 检查 JQ 中是否存在某个键

Use any() to check if certain key exists in JQ

我想使用 jq 检查关键字是否作为键存在于任何级别的 JSON 中。这是我想出的:

jq -c 'paths | select(.[-1]) as $p| index("headline") //empty' news.json

输出是一个数组:

[
  6,
  7,
  9
]

我想将输出数组映射到 jq 函数 any() 并得到一个整体结果,如果键存在则为真,否则为假。

如何使用 jq 完成该操作?

提供any一个迭代器和一个条件

jq 'any(paths; .[-1] == "headline")'

您还可以提供 -e(或 --exit-status)选项,如果结果为 true,则退出状态为 0,而 1 如果结果是 false,可以立即用于 shell.

中的进一步处理
jq -e 'any(paths; .[-1] == "headline")'

你不需要中间数组。

any(paths[-1]; . == "headline")