如何使用 jq 将 JSON 对象流转换为数组

How to convert a JSON object stream into an array with jq

我想使用 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 }'