Преобразовать JSON в CSV

Работает на вашем устройстве · Ваш файл никогда не покидает устройство.

Перетащите файл .json или вставьте JSON прямо из ответа API — и получите CSV, который откроется в Excel, Google Таблицах или любом окне импорта. Список верхнего уровня даёт по строке на элемент; иначе берётся самый длинный список записей в документе, так что {"results": [...], "count": 2} даёт по строке на каждый результат; объект, в котором нет списка, становится одной строкой.

Правила фиксированы, поэтому результат предсказуем: вложенные объекты становятся столбцами через точку (address.city), список простых значений записывается в одну ячейку через точку с запятой, а список объектов внутри записи получает нумерованные столбцы (items.0.name). Строка заголовков — объединение всех найденных ключей в порядке первого появления, так что записи с пропущенными полями просто оставляют ячейку пустой.

CSV записывается по RFC 4180 — поля с запятыми, кавычками и переносами строк корректно берутся в кавычки — в UTF-8 с необязательной меткой BOM, чтобы Excel правильно показывал кириллицу, любую другую письменность и символы. Перед ячейкой, которая начинается с =, +, - или @, ставится апостроф, чтобы табличная программа показала её как текст, а не выполнила как формулу. Первые 200 строк видны до скачивания, и ничего не покидает ваше устройство.

Как Преобразовать JSON в CSV

  1. Перетащите файл JSON или вставьте JSON в поле.
  2. Выберите разделитель столбцов для результата (по умолчанию запятая) и нужна ли метка BOM для Excel.
  3. Нажмите «Преобразовать в CSV» и просмотрите первые строки.
  4. Скачайте .csv.

Поддерживаемые форматы и ограничения

Вход
JSON (.json) — файл или вставленный текст, UTF-8
Выход
CSV, RFC 4180, UTF-8, переносы CRLF, необязательный BOM
Вложенность
Объекты → столбцы через точку; списки значений → через ;
Разделитель
Запятая, точка с запятой, табуляция или вертикальная черта
Где работает
В браузере — без загрузки на сервер

Не подходит для: Глубоко вложенного одиночного объекта без списка внутри — он преобразуется, но в одну очень широкую строку, а не в таблицу.

Какой список становится строками

Если на верхнем уровне список, он и даёт строки. Иначе инструмент просматривает документ на глубину до восьми уровней и ищет самый длинный список объектов. Поэтому и {"response": {"data": {"items": [...]}}}, и {"results": [...], "count": 2, "next": null} дают по строке на элемент, а строка под результатом называет использованный список, например results. Значения рядом с этим списком, вроде count и next, не относятся ни к одной записи и пропускаются.

Из двух одинаково длинных списков побеждает тот, что ближе к верху. Чтобы взять более короткий список, скопируйте его от [ до ] и вставьте только его. Документ без списка объектов становится одной строкой, а обёртки с единственным ключом пропускаются, так что {"order": {"id": 7, "total": 12}} даёт столбцы id и total.

Как значения записываются в ячейки

Текст копируется в точности, включая даты, которые остаются в том виде, в каком они записаны в JSON, например 2024-01-05T10:00:00Z. true и false записываются словами. null, пустой список и пустой объект становятся пустой ячейкой, так что в CSV они выглядят так же, как отсутствующее поле.

Число записывается ровно так, как в JSON: 1.0 остаётся 1.0, 1e21 остаётся 1e21, а идентификатор вроде 12345678901234567890 сохраняет все цифры, даже если он не в кавычках. Обычная программа чтения JSON превратила бы такой идентификатор в 12345678901234567000.

Списки внутри списков и ключи, в которых уже есть точка

Список списков раскрывается на один уровень: "m": [[1, 2], [3]] даёт столбец m.0 со значением 1;2 и столбец m.1 со значением 3. В списке, где смешаны объекты и простые значения, нумеруется каждый элемент, так что "x": [{"z": 1}, 2] даёт x.0.z и x.1.

Имена столбцов получаются соединением ключей через точку, поэтому ключ, в котором точка уже есть, может совпасть с вложенным: {"a.b": 1, "a": {"b": 2}} дал бы a.b дважды. Второй получает суффикс, так что столбцы называются a.b и a.b_2, и оба значения сохраняются.

Выбор разделителя и ячейки, которые начинаются с =

Запятая — обычный выбор. Точка с запятой подходит для табличной программы, настроенной на язык с десятичной запятой (например, на русский): там файл с запятыми часто открывается одним столбцом. Табуляция и вертикальная черта — для систем, которые требуют именно их. Каким бы ни был разделитель, файл получает расширение .csv.

Ячейку, которая начинается с =, +, - или @, табличная программа считает формулой и выполнила бы её при открытии. Перед такой ячейкой ставится апостроф — знак, которым сами таблицы помечают «это текст», так что =1+1 записывается как '=1+1. Обычные числа вроде -5 или +3.5 остаются как есть.

Частые вопросы

Мои файлы загружаются на сервер?
Нет. Преобразование целиком выполняется в вашем браузере, силами вашего же устройства. Файл не покидает компьютер или телефон, а инструмент, которым вы уже один раз воспользовались, работает и без интернета.
Что происходит с вложенными объектами и массивами?
Вложенный объект разворачивается в столбцы через точку: {"address":{"city":"Казань"}} становится столбцом address.city. Список простых значений ("tags": ["a","b"]) записывается как a;b в одной ячейке. Список объектов внутри записи получает нумерованные столбцы: items.0.name, items.1.name.
У меня JSON — объект, а не список. Что получится?
Строками становится самый длинный список записей в любом месте документа — {"results": [...], "count": 2, "next": null} даёт по строке на каждый результат, — а строка под результатом называет использованный список. Значения рядом с этим списком не относятся ни к одной записи и пропускаются. Объект, в котором нет списка, записывается одной строкой с одним столбцом на ключ.
Почему Excel показывает кракозябры и как это исправить?
Excel угадывает кодировку, если файл не начинается с метки BOM. Переключатель «Добавить BOM для Excel» включён по умолчанию и добавляет эту трёхбайтовую метку; отключите его для программ, которым нужен чистый UTF-8.

Похожие инструменты

Ещё в разделе Таблицы и данные

Эта страница на других языках: English · العربية · Deutsch · Français · Español · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা