CSV ⇄ JSON

Вставьте любой из форматов — другой появится по мере ввода, в обе стороны.

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

  1. Вставьте CSV (или TSV / текст с точкой с запятой) либо массив JSON в поле — результат рисуется по мере ввода, кнопки нет. Направление определяется по первому символу и показывается над результатом, чтобы вы могли проверить.
  2. Если направление угадано неверно, выберите CSV → JSON или JSON → CSV. Если всё попало в один столбец, замените «Авто» в разделителе на свой символ. Отключите «Первая строка — заголовок», когда файл начинается с данных — тогда получится массив массивов вместо объектов.
  3. Скопируйте или скачайте результат. Оба варианта используют ровно тот текст, что на экране; файл называется data.json или data.csv. «Загрузить пример» подставляет пример для активного направления.

Пример

Ввод (CSV)

order_id,customer,note,zip,amount,shipped
1001,"Иванова, Анна",просила возврат,00501,89.90,true
1002,Бен Картер,,10001,42.00,false

Результат (JSON)

[
  {
    "order_id": 1001,
    "customer": "Иванова, Анна",
    "note": "просила возврат",
    "zip": "00501",
    "amount": 89.9,
    "shipped": true
  },
  {
    "order_id": 1002,
    "customer": "Бен Картер",
    "note": "",
    "zip": 10001,
    "amount": 42,
    "shipped": false
  }
]

В этом результате стоит проверить четыре вещи: запятая внутри «Иванова, Анна» осталась внутри значения, а не разбила строку; индекс 00501 сохранил ведущий ноль, иначе он стал бы 501; 10001 действительно стало числом, поэтому столбец индекса получает смешанные типы — отключите «Определять числа и логические значения», чтобы все значения оставались строками; а 89.90 превратилось в 89.9, потому что число JSON не может хранить конечный ноль.

Правила, ограничения и известные проблемы

  • Ни загрузки файлов, ни перетаскивания, ни запросов по URL: текст нужно вставить. Зона перетаскивания отняла бы высоту, нужную результату, а честное чтение файлов требует поддержки кодировок, отличных от UTF-8 — этим уже занимается просмотр CSV (GB18030, Big5, Windows-1256), поэтому откройте файл там и скопируйте текст.
  • Ввод ограничен 1 000 000 символов; свыше 200 000 результат ждёт, пока вы перестанете печатать, и сообщает об этом. Выше жёсткого предела вы получаете явную ошибку — ввод никогда не обрезается молча.
  • Определение типов идёт по ячейке и осторожно: преобразуются только true / false / null (только в нижнем регистре) и строгие числа JSON. Целые с ведущим нулём (00501) и числа из 16 и более цифр (длинные ID) всегда остаются строками, а пустые ячейки остаются "", а не становятся null.
  • Число JSON не может хранить конечные нули, поэтому 89.90 становится 89.9, а 42.00 — 42. Отключите «Определять числа и логические значения», чтобы сохранить каждое значение ровно как написано.
  • Число столбцов определяется самой широкой строкой, поэтому ни одно поле не теряется: короткие строки дополняются пустыми строками, а лишние поля получают автоматическое имя. Строки, не совпадающие с первой, перечисляются по номеру.
  • Повторяющиеся имена столбцов переименовываются с _2, _3 … вместо перезаписи друг друга — перезапись молча потеряла бы целый столбец. Отсутствующие или пустые ячейки заголовка становятся column_N. Эти имена машиночитаемы и одинаковы во всех языках интерфейса.
  • JSON → CSV принимает массив объектов (основной случай), массив массивов (позиционные столбцы), один объект и массив простых значений (один столбец «value»). Всё остальное — значение на верхнем уровне или массив, смешивающий объекты с другими значениями, — отклоняется с указанием строки и столбца, без догадок.
  • Вложенные объекты по умолчанию разворачиваются в ключи через точку (address.city); массивы никогда не разворачиваются, они записываются компактным JSON внутри ячейки. Отключите разворачивание, чтобы вложенные объекты тоже оставались JSON. null становится пустой ячейкой.
  • JSON разбирается строго: ни комментариев, ни лишних запятых, ни одинарных кавычек, ни неэкранированных управляющих символов, вложенность до 64 уровней. Один объект на строку (JSON Lines) не принимается — сначала оберните объекты в массив.
  • CSV — прощающая сторона: незакрытая кавычка доводится до конца текста, и её строка называется; пустые строки пропускаются и подсчитываются, а строка с неверным числом полей попадает в список. Жёсткие ошибки даёт только сторона JSON.
  • Выходной CSV записывается с переводами строк CRLF и без метки порядка байтов, и он совпадает с тем, что вы копируете. Если Excel показывает кракозябры при двойном щелчке по нелатинскому CSV, импортируйте его через «Данные → Из текста/CSV» и выберите UTF-8.
  • Вне области: .xlsx, архивы, несколько файлов, JSON Lines, экспорт в YAML/XML/SQL/Excel, сортировка, фильтрация, выбор столбцов и удаление дубликатов — для этого есть просмотр CSV и конвертер конфигураций. Ничего не отправляется, не сохраняется и не попадает в URL.

Что обычно нужно дальше, когда данные уже в другом формате.