jq简单的json对象合并/组合

时间:2018-10-19 09:42:06

标签: json object merge add jq

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是这里的错误工具吗?哪个更合适?

2 个答案:

答案 0 :(得分:4)

尝试:

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

结果:

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

答案 1 :(得分:2)

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

在任何情况下,为了经济地完成任务,请结合使用-n和inputs,如下所示:

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

sigma / 1

如果您不介意sigma(empty)的值为null,则可以如下定义多态sigma

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

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

在任何情况下,使用此定义,对于手头的任务,您都可以编写:simga(inputs)