【问题标题】: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)。