CSV ↔ JSON

Инструмент преобразует таблицы CSV и TSV в JSON и JSON в CSV. Разделитель определяется автоматически, первая строка может задавать имена полей, а предпросмотр показывает, как данные лягут в строки и столбцы. Ошибки — незакрытая кавычка, лишние значения в строке, повторяющееся имя столбца — подчёркиваются в тексте. Пригодится, чтобы превратить выгрузку из Excel или Google Таблиц в данные для JavaScript и API или, наоборот, открыть ответ API в электронной таблице.

Как пользоваться

Выберите действие и вставьте текст в поле слева или откройте файл: .json включает «JSON → CSV», файлы .csv, .tsv и .txt — «CSV → JSON». Результат обновляется сам во время ввода.

«Первая строка — заголовки» превращает каждую строку CSV в объект с полями по именам столбцов; без этой настройки строка становится массивом значений. «Числа и true/false» записывает такие значения в JSON без кавычек; иначе все ячейки остаются строками.

Для Excel с русскими региональными настройками выберите разделитель «;» и оставьте «BOM для Excel» — без этой метки Excel откроет кириллицу в неверной кодировке. При копировании результата метка не добавляется.

Данные обрабатываются в браузере, не отправляются на сервер и не сохраняются после закрытия страницы. Размер — до 2 МБ в UTF-8.

Для вашего удобства рекомендую использовать полноэкранный режим.

Действие
Разделитель

Обрабатываем…

CSV

Файл не выбран
UTF-8, до 2 МБ. Файл можно перетащить на поле. Файл обрабатывается только в вашем браузере.
name;price;stock;tags
"Футболка ""Basic""";990;true;"хлопок, лето"
Кружка;450.50;false;
Блокнот;007;true;бумага

JSON

Для преобразования включите JavaScript. Пример: CSV name;price Кружка;450 соответствует JSON [{"name": "Кружка", "price": "450"}].

Как выполняется преобразование

  • Значение в двойных кавычках может содержать разделитель и перенос строки; кавычка внутри такого значения записывается двумя кавычками: "Футболка ""Basic""".
  • Разделитель определяется по первым строкам: выбирается тот из ,, ;, табуляции и |, который делит строки на одинаковое число столбцов.
  • Числа распознаются только в записи JSON: 450.50 станет числом, а 007, 1 000 и 1,5 останутся строками — иначе потерялись бы ведущие нули и пробелы.
  • Если в строке меньше значений, чем столбцов, недостающие становятся пустыми строками, а статус сообщает, сколько таких строк. Лишние значения считаются ошибкой: обычно это неверный разделитель или незакрытая кавычка.
  • В JSON → CSV столбцы собираются из ключей всех объектов в порядке появления. Вложенные объекты и массивы записываются в ячейку как JSON, а null и отсутствующее поле — пустой ячейкой.

CSV и соответствующий JSON при включённых заголовках и распознавании чисел:

Код
name;price;stock
Кружка;450.50;false
Блокнот;007;true
JSON
[
  { "name": "Кружка", "price": 450.50, "stock": false },
  { "name": "Блокнот", "price": "007", "stock": true }
]

Что проверить вручную

CSV не хранит типы: пустая ячейка может означать пустую строку, null или отсутствие поля, поэтому после обратного преобразования различие между ними теряется. Даты остаются строками в той записи, что была в файле. Если таблица попадёт к другим людям, учтите, что Excel воспринимает значения, начинающиеся с =, +, - или @, как формулы — не открывайте файлы из ненадёжных источников без проверки.

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

Почему Excel показывает всё в одном столбце?

Excel с русскими настройками ожидает разделитель «;», а не запятую. Выберите «;» перед скачиванием или откройте файл через «Данные → Из текстового/CSV-файла» и укажите разделитель вручную.

Чем TSV отличается от CSV?

Только разделителем: в TSV значения разделены табуляцией. Такой формат получается при копировании диапазона ячеек из электронной таблицы — вставьте его в поле, и разделитель определится автоматически.

Безопасно ли вставлять выгрузку с персональными данными?

Данные обрабатываются в вашем браузере и не отправляются на сервер. Предпросмотр выводит значения только как текст.

Изучить JSON

Синтаксис JSON и работа с ним в JavaScript описаны в статьях об объекте JSON и методах JSON.parse() и JSON.stringify().