Преобразуйте список строк в массив JSON с помощью jq
Имея список строк (по одной в строке), например
str1
str2
...
как мне преобразовать их в список JSON
["str1", "str2"]
?
1 ответ
Предполагая, что ввод задан на stdin, следующая команда решает проблему:
jq -Rn '[inputs]'
Флаг считывает ввод как "необработанные" (т. Е. Строки без кавычек) и
-n
передает стандартный ввод
inputs
(прихлебывая
-s
не работает, потому что в сочетании с
-R
, он считывает весь ввод как одну строку). Добавлять
-c
чтобы напечатать JSON в одной строке, как в вопросе.
Любые пустые строки (например, завершающий символ новой строки) можно пропустить, добавив небольшой фильтр:
jq -Rn '[inputs|select(length>0)]'
Если строки разделены другими символами, например
,
, строка может быть разделена
jq -R 'split(",")'
Это можно использовать для разделения на
\n
также для решения вышеуказанного случая, но мое (непроверенное) предположение состоит в том, что вышеуказанное решение более переносимо с системами, использующими другие терминаторы линии.