jq 简单 json 对象 merge/combination

jq simple json object merge/combination

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 是不是用错了工具?哪个更合适?

尝试:

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

结果:

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

在某些情况下,可能需要避免“吞噬”对象,因为这需要比必要更多的内存。

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

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

sigma/1

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

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

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

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