Конвертеры данных · 5 минута чтения
От JSON до CSV: выравнивание вложенных данных без потери
CSV по-прежнему является форматом, который открывается во всем: в электронных таблицах, инструментах бизнес-аналитики, финансовых системах, на ноутбуке рецензента. Преобразование JSON в CSV в основном связано с тем, что делать с вложенными частями, поскольку таблица имеет одну строку на запись и заранее фиксированные столбцы, а JSON успешно вкладывается так глубоко, как ей хочется.
Обновлено
Проблема с колонкой
Два правила делают преобразование JSON в CSV предсказуемым. Во-первых, столбцы представляют собой объединение всех ключей во всех записях: ключ, который появляется только в одном объекте, все равно получает столбец, пустой в другом месте. Во-вторых, каждая строка должна выдавать значения в одном и том же порядке. В случае любой ошибки файл открывается нормально и незаметно смещается по сравнению с первой строкой, где ключ отсутствовал.
Сведение вложенных объектов
Традиционный метод записи — точка: `address`, содержащий `city` и `postcode`, становится `address.city` и `address.postcode`. Это делает каждое значение видимым и доступным для запроса в электронной таблице за счет более длинных заголовков. Глубоко вложенные структуры могут создавать громоздкие имена, поэтому сгладьте один уровень, на котором вы управляете данными, и дайте инструменту полностью сгладить их во время исследования.
{"id": 7, "customer": {"name": "Ada", "plan": "pro"}}
→ id,customer.name,customer.plan
7,Ada,pro
Массивы: та часть, которая плохо выравнивается
Массив скаляров можно объединить в одну ячейку с помощью разделителя, что удобно для тегов и приемлемо для коротких списков. Массив объектов — например, позиции заказа — не помещается в одну ячейку: объедините его, и вы не сможете суммировать количества; индексируйте его в `items.0.sku`, `items.1.sku`, а столбцы зависят от того, сколько товаров было в каждом заказе. Когда вы попадаете в этот случай, данным требуются два файла CSV, по одному на таблицу, связанные ключом.
Если ячейка содержит запятую, кавычку или новую строку, ее необходимо заключить в кавычки, а внутренние кавычки удвоить. Сгенерированный вывод справляется с этим, а отредактированный вручную CSV обычно этого не делает, поэтому импорт периодически завершается сбоем в строках, содержащих адреса.
Задание поведения файла в Excel
Excel предполагает системную кодировку, если не указано иное, поэтому символы с диакритическими знаками могут быть повреждены. Выпуск UTF-8 с меткой порядка байтов позволяет избежать этого; без него тот же файл, который идеально выглядит в Numbers или Sheets, отображает моджибаке в Excel. Длинные числовые идентификаторы — номера карт, крупные SKU — также стоит цитировать, чтобы Excel не преобразовывал их в экспоненциальное представление.
Когда CSV — неверный вывод
Если потребителем является программа, CSV отбрасывает информацию о типе и вложенности без всякой пользы — лучше JSON Строки или загрузка базы данных. CSV предназначен для людей с электронными таблицами: отчеты, экспорт, сверка. Выбрать его сознательно, а не по привычке – это половина дела. Преобразователь YamlBox JSON в CSV полностью работает в браузере, поэтому экспорт, содержащий строки клиентов, никогда не покидает ваш компьютер.
от JSON до CSV — часто задаваемые вопросы
Как обрабатываются вложенные объекты при преобразовании JSON в CSV?
По умолчанию они выравниваются с помощью точечной записи — `customer.name` становится отдельным столбцом. Вместо этого вы можете сохранять значения сгруппированными, но именно сглаженные столбцы позволяют фильтровать и поворачивать файл в электронной таблице.
Почему символы с акцентом после преобразования выглядят в Excel неправильно?
Excel читает файл, используя локальную системную кодировку, если только знак порядка байтов не говорит иное. Экспорт UTF-8 со спецификацией сохраняет имена без изменений; без него одни и те же данные отображаются правильно в Google Sheets и неправильно в Excel.
Могу ли я преобразовать массив объектов в CSV?
Столбцы возникают в результате объединения ключей всех записей, поэтому массив объектов смешанной формы по-прежнему создает действительную таблицу с пробелами там, где ключ отсутствовал. Массивы внутри этих объектов требуют разделения на второй файл.
Инструменты, упомянутые в этом посте
Еще статьи для чтения
5 минута чтения
От CSV до JSON: от электронной таблицы к структурированным
Преобразование CSV в JSON в браузере — объясняются строки заголовков, разделители, правила кавычек и обработка типов, а также экспорт электронных таблиц, который нарушает работу парсеров.
6 минута чтения
Excel до JSON: превращение книг в структурированные данные
Преобразуйте Excel в JSON в браузере из книг XLSX — заголовки, ряды дат, формулы и несколько листов с пояснениями, ничего не загружая.
5 минута чтения
Таблицы Markdown: генерируйте их вместо подсчета труб
Создавайте таблицы уценки со вкусом GitHub из строк или электронных таблиц — выравнивание, экранирование каналов и случаи, когда таблица является неправильным выбором для вашего README.