【问题标题】:jq simple json object merge/combinationjq简单json对象合并/组合
【发布时间】:2019-03-24 04:38:21
【问题描述】:

a.json

{"a": 1}

b.json

{"b": 1}

期望的结果

{"a": 1, "b": 1}

jq -s "." a.json b.json

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

它被包裹在一个数组中


jq "." a.json b.json

{
  "a": 1
}
{
  "b": 1
}

这甚至不是有效的 json


这里的 jq 是不是错误的工具?哪个更合适?

【问题讨论】:

    标签: json object merge add jq


    【解决方案1】:

    试试:

    jq -s 'add' a.json b.json
    

    结果:

    {
      "a": 1,
      "b": 1
    }
    

    【讨论】:

      【解决方案2】:

      在某些情况下,可能需要避免“slurping”对象,因为这需要更多的内存而不是必要的。

      无论如何,要经济地完成任务,请将 -n 与 inputs 结合使用,如下所示:

      reduce inputs as $i ({}; . + $i)
      

      sigma/1

      如果您不介意 sigma(empty) 的计算结果为 null,您可以定义一个多态的 sigma,如下所示:

      def sigma(s): reduce s as $x (null; . +$x);
      

      这适用于数字流、对象流、数组流和字符串流,因此适用于您的标准库。

      无论如何,有了这个定义,对于手头的任务,你可以写:simga(inputs)

      【讨论】:

        猜你喜欢
        • 2021-07-21
        • 1970-01-01
        • 2021-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-08
        相关资源
        最近更新 更多