JSON в CSV
Последнее обновление: 1 октября 2026 г.
Преобразуйте массив объектов JSON в таблицу CSV. Каждый объект становится строкой, ключи — столбцами, а поля экранируются так, как ожидает табличный процессор. Всё выполняется в браузере, данные не покидают машину.
Что делает это преобразование
Файл CSV — это таблица, записанная простым текстом: одна строка на запись, разделитель между ячейками и первая строка с именами столбцов. У JSON такой формы нет. Самая естественная точка пересечения — массив объектов: каждый объект является записью, а его ключи — именами полей. Именно так выглядит ответ API со списком, поэтому инструмент в первую очередь принимает эту форму.
Для [{"id":1,"name":"Ada"},{"id":2,"name":"Grace"}] вывод — строка заголовков id,name и две строки 1,Ada и 2,Grace. Кроме правил ниже, ничего не переставляется и не переписывается.
Какие формы JSON становятся таблицей
- Массив объектов——каждый объект — строка; заголовок — объединение всех ключей.
- Массив массивов——используется как строки напрямую, заголовок не выводится; для данных, уже приведённых к нужной форме.
- Один объект——одна строка, его ключи становятся заголовком.
- Массив значений——один столбец без имени.
- Всё остальное——отдельное число, строка или
nullтаблицей не является и сообщается как ошибка, а не молча преобразуется.
Деталь с объединением важна. Если у части записей есть ключ phone, а у других нет, заголовок всё равно включит phone, а строки без него оставят эту ячейку пустой — столбец не исчезает. Прямое следствие: неоднородный JSON даёт таблицу с разреженными столбцами.
Вложенные значения становятся текстом
Ячейка может хранить только текст, поэтому объект или массив внутри значения записывается как компактный JSON в своей ячейке. {"address":{"city":"London"}} превращается в ячейку {"city":"London"}. Информация сохраняется, но перестаёт быть структурированной: инструмент не разворачивает address.city в столбец с точкой. Если нужны столбцы с точками, сначала уплощите JSON — это решение о модели данных, а не о форматировании.
Кавычки, разделители и концы строк
Вывод следует RFC 4180 — правилу, о котором договорились все табличные процессоры и библиотеки CSV:
- Поле заключается в двойные кавычки только при необходимости: если содержит разделитель, двойную кавычку, перевод строки или пробелы в начале и конце.
- Внутри поля в кавычках двойная кавычка записывается дважды, поэтому текст воспроизводится точно.
- Строки заканчиваются CRLF — парой «возврат каретки + перевод строки», которую задаёт стандарт.
Разделитель выбираете вы. По умолчанию это запятая, но в системах, где десятичный разделитель — запятая, безопаснее точка с запятой, иначе файл с запятыми там неоднозначен. Табуляция и вертикальная черта подойдут для данных, которые уже содержат запятые.
Чтобы Excel открыл файл корректно
Excel не читает UTF-8 безоговорочно: получив .csv без метки порядка байтов, он угадывает кодировку и часто выбирает устаревшую кодовую страницу, отчего портятся буквы с диакритикой и текст CJK. Параметр BOM для Excel добавляет в начало загружаемого файла трёхбайтовую метку UTF-8, и Excel читает его правильно. Она применяется только к загрузке, текст на странице остаётся чистым.
Что CSV не сможет вернуть
CSV — текстовый формат, и он теряет данные. Он забывает, какие значения были числами, логическими или null, и уплощает вложенность в текст. null и пустая строка оба приходят как пустая ячейка, а число — как свои цифры. При обратном преобразовании в JSON вы получите строки, если на другой странице не включите определение типов, — и даже тогда код вроде 007 должен остаться строкой, чтобы сохранить ведущие нули. Сохраняйте исходный JSON, когда типы важны; считайте CSV экспортом, а не первоисточником.
Частые вопросы
Какие формы JSON можно преобразовать в CSV?
CSV — это таблица, поэтому самая естественная форма входа — массив объектов: каждый объект становится строкой, а его ключи — столбцами. Массив массивов используется как строки напрямую, один объект становится одной строкой, а массив простых значений — одним столбцом. Всё остальное——отдельное число, строка или null——таблицей не является и отклоняется.
Что происходит, когда у объектов разные ключи?
Заголовок — это объединение всех ключей, встреченных в массиве, в порядке первого появления. Строка, в которой такого ключа нет, просто оставляет соответствующую ячейку пустой. Поэтому CSV из неоднородного JSON может содержать столбцы, пустые почти во всех строках.
Как обрабатываются вложенные объекты и массивы?
В CSV нет вложенности, поэтому значение, которое само является объектом или массивом, записывается в ячейку как компактный JSON. Информация сохраняется, но перестаёт быть структурированной: это преобразование уплощает через преобразование в строку, а не разворачивает вложенные ключи в столбцы с точками.
Когда поле заключается в кавычки?
Поле заключается в кавычки, когда содержит разделитель, двойную кавычку, перевод строки или пробелы в начале или конце. Внутри такого поля литеральная двойная кавычка записывается дважды, поэтому текст воспроизводится точно. Это правило RFC 4180, и именно оно позволяет одной ячейке содержать запятую или перевод строки.
Почему CSV отображается в Excel как мусор?
Excel угадывает кодировку файла .csv и без метки порядка байтов часто выбирает устаревшую кодовую страницу, из-за чего портятся символы с диакритикой и текст CJK. Флажок BOM добавляет в начало загружаемого файла U+FEFF, и Excel читает его как UTF-8. BOM добавляется только к загрузке, а не к тексту, показанному здесь.
Преобразование JSON в CSV обратимо без потерь?
Нет. CSV хранит текст, поэтому забывает, какие значения были числами, логическими или null, и не может представить вложенность иначе как текстом. При обратном преобразовании в JSON вы получите строки, если не включите определение типов. Сохраняйте исходный JSON, если типы нужно вернуть точно.
Нужно обратное направление? CSV в JSON читает таблицу обратно в массив объектов. Нашли ошибку? Свяжитесь с нами.