【问题标题】:How to combine 2 JSON objects into one with jq?如何将 2 个 JSON 对象与 jq 合二为一?
【发布时间】:2021-12-15 14:33:32
【问题描述】:

我在两个文件(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 中的值。

【问题讨论】:

    标签: json jq


    【解决方案1】:

    如果 .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

    【讨论】:

    • 谢谢。像魅力一样工作!
    猜你喜欢
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 2019-06-23
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多