【发布时间】:2015-06-06 21:55:40
【问题描述】:
我想用jq把一个json对象流放到一个json数组中,比如从
{"a":1}
{"b":2}
到
[{"a":1},
{"b":2}]
但是这行不通
echo '
{"a":1}
{"b":2}
'|jq '[.]'
自从我得到
[
{
"a": 1
}
]
[
{
"b": 2
}
]
【问题讨论】:
我想用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 的一些概念仍然让我难以理解。
flatten 啜饮输入jq -s 'flatten'。或者更好的是,遍历每个输入 jq -n '[inputs[]]'
flatten 是我需要的提示。但我首先必须理解这个概念,jq 不只是读取 one JSON 实体,而是接受它们的“流”。有了这个我理解了-s,我理解了flatten。 :-)