首页 > 解决方案 > 在连接 JSON 文件时排除空输入

问题描述

我正在寻找使用 jq 连接目录中的多个 JSON 文件。大多数 JSON 文件看起来像这样

[
  {
    a: 12,
    b: 22,
    c: []
  }
]

因此,为了连接它们,我使用以下 jq 查询

jq -s '[.[]|.[ ]]' *.json > xyz.json

这似乎工作正常,我得到了预期的连接输出,直到它遇到一个 JSON 文件,其中只写了 null,当我尝试将它与其他文件连接时,我得到一个错误。

$ cat test.json
  null
$ jq -s '[.[]|.[ ]]' xyz.json test.json > y.json
jq: error (at test.json:0): Cannot iterate over null (null)

有没有办法在通过目录连接时排除这个空 JSON 文件?

我必须提到这些 JSON 文件是作为不同Trivy Image扫描的输出生成的,我无法控制输出是什么。

如果其他人以前遇到过这个问题,请帮助我。

标签: jsonjqtrivy

解决方案


只需选择数组输入。

jq -n '[inputs | arrays[]]' *.json

在线演示

如果您不想排除所有非数组而只select(. != null)排除.arraysnull


推荐阅读