通过将多个 json 文件合并为一个公共对象来将其合并为一个

Chr*_*ris 4 json jq

我有很多这种格式的json文件:

样品file1

{
  "attributes": [
    {
      "name": "Node",
      "value": "test"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

样品file2

{
  "attributes": [
    {
      "name": "version",
      "value": "11.1"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

等等。

我需要将它们全部合并到一个 json 文件中,例如。

{
  "attributes": [
    {
      "name": "Node",
      "value": "test"
    },
    {
      "name": "version",
      "value": "11.1"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

有人可以提供jq的解决方案吗?

Rom*_*est 13

jq 解决方案:

jq -s '{ attributes: map(.attributes[0]) }' file*.json
Run Code Online (Sandbox Code Playgroud)
  • -s( --slurp) - 不是为输入中的每个JSON对象运行过滤器,而是将整个输入流读入一个大数组并只运行一次过滤器。

示例输出:

{
  "attributes": [
    {
      "name": "Node",
      "value": "test"
    },
    {
      "name": "version",
      "value": "11.1"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)