如何使用 jq 将 2 JSON 个对象合并为一个对象?

How to combine 2 JSON objects into one with jq?

我在两个文件(result_0.json 和 result_1.json)中有两个 JSON 对象,它们看起来像这样

{
  "data": {
    "pools": [
      {
        "id": "1"
      },
      {
        "id": "2"
      }
    ]
  }
}

像这样:

{
  "data": {
    "pools": [
      {
        "id": "3"
      },
      {
        "id": "4"
      }
    ]
  }
}

我想要得到的是这样的:

{
  "data": {
    "pools": [
      {
        "id": "1"
      },
      {
        "id": "2"
      },
      {
        "id": "3"
      },
      {
        "id": "4"
      }
    ]
  }
}

怎么做到的?我试过了

jq -s add result_0.json result_1.json 

但它只是用 result_1.json.

的值覆盖 result_0.json 中的值

如果 .data.pool 是 json 文件中唯一的键,您可以使用

jq -n '{ data: { pools: [inputs.data.pools] | add } }' result0 result1

这将创建所需的输出:

{
  "data": {
    "pools": [
      {
        "id": "1"
      },
      {
        "id": "2"
      },
      {
        "id": "3"
      },
      {
        "id": "4"
      }
    ]
  }
}

关于inputs关键字,考虑阅读JQ's docs on this part