YamlBox

Конвертеры данных · 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?

Столбцы возникают в результате объединения ключей всех записей, поэтому массив объектов смешанной формы по-прежнему создает действительную таблицу с пробелами там, где ключ отсутствовал. Массивы внутри этих объектов требуют разделения на второй файл.

Инструменты, упомянутые в этом посте

Просмотрите полный список инструментов 19

Еще статьи для чтения

Все 19 публикации →