我想使用jq将一串JSON对象放入一个JSON数组中,例如从{"a":1} {"b":2} 到[{"a":1}, {"b":2}] 但这样做行不通。echo ' {"a":1} {"b":2} '|jq '[.]' 自从我得到了[ { "a": 1 } ] [ { "b": 2 } ]
使用-s选项将其全部读入。$ jq -s '.' <<< '{ "a": 1 } { "b": 2 }' [ { "a": 1 }, { "b": 2 } ] 作为另一种选择,使用inputs读取值是更加灵活的替代方案。通常需要与-n选项一起使用,以防止第一个值过早地被消耗。$ jq -n '[inputs]' <<< '{ "a": 1 } { "b": 2 }'
[{"a":1}]
和[{"b":2}]
,结果应该是没有内部数组的,即[{"a":1},{"b":2}]
。有什么提示吗?似乎 jq 的一些概念仍然让我困惑。 - towiflatten
命令来扁平化 slurped 输入,如:jq -s 'flatten'
。或者更好的方法是遍历每个输入项,使用命令jq -n '[inputs[]]'
。 - Jeff Mercadojq
不仅可以读取一个 JSON 实体,而且可以接受一个“流”。有了这个,我就理解了-s
,也就理解了flatten
。 :-) - towi