Перейти к содержимому

Направление конвертации

Конвертация JSON в CSV

Преобразование JSON → CSV на сервере, без установки программ

.json.csv

.json.csv
  1. Загрузить
  2. Выбрать формат
  3. Скачать

Загрузка файлов

Область приёма файла

или

Файлы JSON. До 5 МБ, до 20 файлов за раз. Изображение можно вставить из буфера обмена: Ctrl+V.

В таблицу разворачивается массив однотипных объектов: ключи становятся заголовками столбцов. Вложенные объекты приводятся к плоскому виду через точку в имени колонки, а у записей с разным набором полей часть ячеек останется пустой.

Исходники и результаты хранятся 60 минут, затем стираются фоновым уборщиком. Предельный размер файла — 5 МБ, срок хранения — час.

JSON и CSV: характеристики

Характеристики форматов JSON и CSV рядом
Характеристика.jsonJSON.csvCSV
Полное названиеJavaScript Object NotationComma-Separated Values
РазработчикДуглас Крокфорднет данных
Год появления2001нет данных
Расширение.json.csv
MIME-типыapplication/json, text/json, application/x-jsontext/csv, application/csv, text/comma-separated-values
СодержимоеТекстовоеТекстовое
Несколько страниц в файлеНетНет
Типы данныхСтрока, число, логическое, null, массив, объектнет данных
СтандартRFC 8259 / ECMA-404RFC 4180
КодировкаUTF-8нет данных
КомментарииНе поддерживаютсянет данных
СхемаОпционально, через JSON Schemaнет данных
Чем открытьVS Code, Notepad++, Sublime Text, JetBrains IDE, Google Chrome, jqMicrosoft Excel, LibreOffice Calc, Google Таблицы, Notepad++, VS Code, Блокнот
СпецификацияОписание форматаОписание формата
Разделительнет данныхЗапятая, точка с запятой или табуляция
Экранированиенет данныхДвойные кавычки, кавычка внутри удваивается
Листынет данныхРовно один на файл
Формулы и оформлениенет данныхНе поддерживаются

Преобразование JSON → CSV

JSON описывает данные деревом произвольной глубины, CSV — прямоугольником из строк и столбцов. Прямого соответствия между этими моделями нет, поэтому дерево уплощается: путь до каждого листа склеивается в имя колонки через точку. Развёртывается массив однотипных объектов — он ищется в корне документа или в полях обёртки ответа.

Правила уплощения одинаковы на любой глубине. Ключ вложенного объекта склеивается с ключом родителя: поле city внутри address внутри customer даёт колонку customer.address.city. Элементы массива получают порядковый индекс — tags.0, items.1.price. Набор колонок собирается объединением ключей всех записей: столбец появляется, если поле встретилось хотя бы однажды, у остальных строк ячейка остаётся пустой, а порядок столбцов определяется первым появлением ключа.

Точность чисел — то, что стоит проверить до импорта. JSON не различает целые и дробные значения, а разбор идёт в двоичной плавающей точке двойной точности, где целые представимы без искажений до 9 007 199 254 740 991. Девятнадцатизначный идентификатор заказа, записанный числом, потеряет младшие разряды ещё на этапе разбора — в исходном JSON такие поля должны быть строками. Даты остаются строками в том виде, в каком они записаны, чаще всего по ISO 8601.

Оформление результата подчиняется стандарту CSV: значение, внутри которого встречается разделитель, кавычка или перенос строки, заключается в двойные кавычки, а кавычка внутри такого значения удваивается. Файл записывается в UTF-8 с меткой порядка байтов из трёх байтов — она нужна табличным редакторам, чтобы опознать кодировку без диалога импорта. Разделитель задаётся параметром: запятая, точка с запятой или табуляция. На обработку отводится 120 секунд.

Порядок преобразования JSON → CSV

  1. Шаг 1

    Проверка структуры источника

    Лучше всего разворачивается массив однотипных объектов в корне файла. Если в документе несколько разных списков, вырежьте нужный до загрузки.

  2. Шаг 2

    Загрузка

    Направление принимает несколько файлов за задание, на каждое преобразование отводится 120 секунд.

  3. Шаг 3

    Разделитель

    Запятая — для импорта в базы данных и скрипты, точка с запятой — для табличных редакторов с русской локалью, табуляция — для переноса через буфер обмена.

  4. Шаг 4

    Контроль колонок

    Откройте результат и проверьте заголовки с точками: они должны соответствовать путям во вложенных объектах. Отдельно посмотрите длинные числовые поля.

Вопросы по работе сервиса

По какому правилу дерево раскладывается по колонкам?

Объект — по имени: ключи родителя и потомка склеиваются через точку до самого листа дерева. Массив — по индексу: tags.0, tags.1 и далее. Ни одно значение при этом не теряется, но таблица становится тем шире, чем глубже была вложенность.

Длинный числовой идентификатор изменился в последних цифрах.

Это ограничение самого JSON: числа разбираются в двоичной плавающей точке двойной точности, где без искажений представимы целые до 9 007 199 254 740 991. Более длинные значения округляются на этапе разбора, до формирования таблицы. Такие поля следует хранить в исходном файле строками в кавычках.

У записей разный набор полей. Что будет с таблицей?

Заголовки соберутся объединением: колонка появится, если поле встретилось хотя бы у одной записи, у остальных строк соответствующая ячейка останется пустой. Порядок столбцов определяется тем, в какой записи ключ встретился впервые.

Восстановит ли обратное направление исходную структуру?

Нет. При разборе CSV колонка customer.address.city станет плоским ключом с точками в имени, а не тремя уровнями вложенности: точка в заголовке — это символ имени, а не признак структуры. Если нужна исходная форма документа, сохраняйте оригинальный JSON.

Зачем в файл добавляется метка порядка байтов?

Чтобы табличные редакторы опознали UTF-8 без диалога импорта. Без этих трёх байтов часть программ читает файл в однобайтовой кодировке системы, и кириллица превращается в набор посторонних символов. Скрипты и базы данных метку игнорируют либо отбрасывают при чтении.