【问题标题】:jq - merge only single key from second JSON file into main JSON filejq - 仅将第二个 JSON 文件中的单个键合并到主 JSON 文件中
【发布时间】:2020-02-25 14:18:43
【问题描述】:

给定:

master.json:

{"a":[{"x":1}], "b":1}

额外的.json:

{"a":[{"x":2}], "somekey2":2, "somekey3":3}

预期输出:

{
  "a": [
    {
      "x": 1
    },
    {
      "x": 2
    }
  ],
  "b": 1
}

我需要从 extra.json 合并到 "a" 键的 master.json 内容,忽略第二个 JSON 可能具有的所有其他键。

试过了,还是不行

jq -s "add" '.[a] + .[a]' x1 x2

【问题讨论】:

    标签: json jq


    【解决方案1】:

    你不需要啜它们。没有任何标志,您可以通过 input 关键字访问第二个输入。

    $ jq '.a += input.a' master.json extra.json 
    {
      "a": [
        {
          "x": 1
        },
        {
          "x": 2
        }
      ],
      "b": 1
    }
    

    【讨论】:

      【解决方案2】:

      只要文件不是很大,slurp 并附加数组 a 的内容就足够了

      jq -s '.[].a = ([.[].a]|add|unique)|.[0]' master.json extra.json
      

      如果允许为数组保留重复对象,则可以删除 unique 部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多