Как преобразовать массив CSV в JSON с помощью инструмента командной строки Miller?
Используя инструмент командной строки Miller , я хочу преобразовать файл CSV с заголовками в массив JSON.
В настоящее время я использую эту команду:
mlr --icsv --ojson cat sample.csv > sample.json
Он выводит JSON, но не в формате массива.
Это пример ввода CSV:
Keyword, Weight, Quantity
Apple, 10, 2345
Orange, 23, 467
Banana, 2345, 2345
И это вывод, который я получаю от Миллера:
{ "Keyword": "Apple", "Weight": 10, "Quantity": 2345 }
{ "Keyword": "Orange", "Weight": 23, "Quantity": 467 }
{ "Keyword": "Banana", "Weight": 2345, "Quantity": 2345 }
Как видите, этот вывод представляет собой строки JSON, а не формат массива.
Я хочу, чтобы JSON был массивом, например:
[
{ "Keyword": "Apple", "Weight": 10, "Quantity": 2345 },
{ "Keyword": "Orange", "Weight": 23, "Quantity": 467 },
{ "Keyword": "Banana", "Weight": 2345, "Quantity": 2345 }
]
Какова правильная команда Миллера для этого?
1 ответ
Догадаться.
Вам нужно использовать
--jlistwrap
.
Таким образом, полная команда становится:
mlr --icsv --ojson --jlistwrap cat sample.csv > sample.json
Что выводит это:
[
{ "Keyword": "Apple", "Weight": 10, "Quantity": 2345 }
,{ "Keyword": "Orange", "Weight": 23, "Quantity": 467 }
,{ "Keyword": "Banana", "Weight": 2345, "Quantity": 2345 }
]
Он не отформатирован красиво (запятые в неправильной строке и без отступа), но это правильный массив JSON.
После запуска инструмента для автоматического форматирования JSON это будет выглядеть так:
[
{
"Keyword":"Apple",
"Weight":10,
"Quantity":2345
},
{
"Keyword":"Orange",
"Weight":23,
"Quantity":467
},
{
"Keyword":"Banana",
"Weight":2345,
"Quantity":2345
}
]