我想转换对象流:
{ "a": "green", "b": "white" } { "a": "red", "c": "purple" }
成为一个对象:
{ "a": "red", "b": "white", "c": "purple" }
另外,如何将相同的序列包装到数组中?
[ { "a": "green", "b": "white" }, { "a": "red", "c": "purple" } ]
可悲的是,手册严重缺乏全面性,谷歌搜索也没有找到答案.
如果您的输入是一个对象流,那么除非您的jq具有inputs
,否则必须"slurped"对象,例如使用-s命令行选项,以便将它们组合在一起.
因此,在输入流中组合对象的一种方法是使用:
jq -s add
对于第二个问题,创建一个数组:
jq -s .
当然还有其他选择,但这些都很简单,不需要最新版本的jq.使用jq 1.5及更高版本,您可以使用"输入",例如jq -n '[inputs]'
使用-s命令行选项进行替代的替代方法是使用inputs
过滤器。像这样:
jq -n '[inputs] | add'
这将产生一个包含所有输入对象的对象。