Конвертер JSON в CSV - разложить вложенные данные
Конвертер JSON в CSV
Что делает этот инструмент
Кто-то прислал вам ответ API, а кто-то другой хочет то же самое в таблице. Вся задача в этом - и она сложнее, чем кажется: JSON это дерево, а таблица это сетка. Эта страница принимает три решения, превращающие одно в другое, и показывает, что именно она решила.
Как пользоваться
- 1 Вставьте JSON или перетащите файл .json.
- 2 Выберите разделитель - для Excel возьмите точку с запятой.
- 3 Нажмите «Преобразовать», затем скопируйте результат или скачайте .csv.
Дерево не влезает в сетку, поэтому его раскладывают
Вложенный объект превращается в колонку через точку: {"city":{"name":"London"}} даёт колонку city.name. Без этого конвертер пишет в ячейку «[object Object]» - файл открывается, выглядит правильным, и половины ваших данных нет. Списки простых значений объединяются в одну ячейку, списки объектов получают нумерованные колонки.
[
{
"name": "Ada",
"city": { "name": "London" },
"note": "Loves \"tea\""
},
{
"name": "Grace",
"city": { "name": "New York, NY" },
"tags": ["math", "navy"]
}
]
name,city.name,note,tags Ada,London,"Loves ""tea""", Grace,"New York, NY",,math; navy
Колонки берутся из всех записей, а не из первой
В настоящих данных записи редко имеют одинаковые поля: необязательное поле появляется в сороковой записи и ни в одной до неё. Конвертер, читающий только первую запись, молча выбрасывает эту колонку, и в результате об этом ничто не говорит. Здесь заголовок - это объединение всех встреченных ключей в порядке их первого появления, а недостающие поля дают пустую ячейку.
Одна заблудившаяся запятая сдвигает все колонки
Любое значение, содержащее разделитель, кавычку или перенос строки, должно быть взято в кавычки, а кавычки внутри - удвоены. Этого требует стандарт CSV, и именно здесь конвертеры ошибаются чаще всего. Адрес с запятой, комментарий с переносом строки, имя с апострофом - каждый молча ломает файл, где этот шаг пропущен.
Excel ломает CSV-файлы двумя разными способами
Во-первых, без метки порядка байтов он читает UTF-8 как локальную кодовую страницу, и кириллица с диакритикой превращается в кашу. Во-вторых, во многих локалях он ждёт точку с запятой вместо запятой и сваливает каждую строку в один столбец. Здесь и то и другое - опции, и обе выключены по умолчанию: стандарт говорит «запятая и без метки», а файл обычно уходит в скрипт, а не в таблицу.