Как преобразовать поток объектов JSON в массив с jq

Я хочу использовать jq, чтобы поместить поток json-объектов в json-массив, например, из

{"a":1}
{"b":2}

к

[{"a":1},
{"b":2}]

Но это не сработает

echo '
{"a":1}
{"b":2}
'|jq '[.]'

так как я получил

[
  {
    "a": 1
  }
]
[
  {
    "b": 2
  }
]

Ответ 1

Разделите его с помощью параметра -s.

$ jq -s '.' <<< '{ "a": 1 } { "b": 2 }'
[
  {
    "a": 1
  },
  {
    "b": 2
  }
]

В качестве другой опции чтение значений с помощью inputs является гораздо более гибкой альтернативой. Обычно вы хотите использовать это в сочетании с опцией -n, чтобы предотвратить преждевременное потребление первого значения.

$ jq -n '[inputs]' <<< '{ "a": 1 } { "b": 2 }'