Справочный раздел

Форматы данных: JSON, YAML, XML, CSV и бинарные форматы

Синтаксис, расширения, MIME-типы, назначение и ограничения текстовых, табличных и бинарных форматов.

Сравнительная таблица

Синтаксис, MIME-тип и назначение

Нажмите на пример, расширение или MIME-тип, чтобы скопировать значение. Бинарные примеры показаны шестнадцатеричными байтами.

Форматы данных с примерами, расширениями, MIME-типами и назначением
Формат Пример Расширение и MIME Когда использовать
Структурированный текстЧитаемые форматы для API, документов и конфигурации. 4
JSON APIстрогий синтаксис
Практический стандарт для веб-API и обмена между приложениями: объекты, массивы и небольшой набор типов.Учтите: Комментарии, завершающие запятые, NaN и Infinity не входят в JSON.
YAML конфигурациякомментарии
Выразительный формат для конфигурации и документов, рассчитанный на ручное чтение и редактирование.Учтите: Отступы значимы; правила типов и поддерживаемые возможности зависят от версии парсера.
TOML конфигурацияявные типы
Предсказуемый формат конфигурации с явными строками, числами, датами, массивами и таблицами.Учтите: Хорош для настроек, но менее удобен для глубоко вложенных документов и потоков данных.
XML документысхемы
Расширяемая разметка для документов и интеграций, где нужны атрибуты, пространства имён и развитые схемы.Учтите: Парсинг сложнее и многословнее; внешние сущности должны быть отключены для недоверенных данных.
Таблицы и потокиПлоские записи, экспорты и обработка данных построчно. 3
CSV таблицыExcel
Распространённый обмен табличными данными со строками-записями и полями, разделёнными запятыми.Учтите: Заранее согласуйте разделитель, кодировку, наличие заголовка и экранирование кавычками.
TSV таблицытабуляция
Таблица с полями, разделёнными табуляцией; удобна, когда в значениях часто встречаются запятые.Учтите: Табуляции и переводы строк внутри значений всё равно требуют согласованных правил экранирования.
JSON Lines / NDJSON логипотоки
MIME-тип пока не стандартизован
Каждая строка — самостоятельное значение JSON, поэтому записи можно читать, дописывать и передавать по одной.Учтите: Пустая строка не является записью; используйте UTF‑8 и отделяйте каждое значение переводом строки.
Компактные бинарные форматыМеньше трафика и быстрее разбор, но нужен специализированный декодер. 3
CBOR бинарныйбез схемы
Стандартизованное компактное бинарное представление с типами, тегами и возможностью декодировать данные без внешней схемы.Учтите: Байты не читаются вручную; для подписей и хешей отдельно согласуйте детерминированное кодирование.
Protocol Buffers бинарныйсхема
Схемная сериализация с числовыми идентификаторами полей, компактными сообщениями и генерацией кода для разных языков.Учтите: Для декодирования нужна совместимая схема; номера полей нельзя переиспользовать после удаления.
MessagePack бинарныйбез схемы
Распространённый, но не зарегистрированный IANA тип
Компактная бинарная сериализация с моделью данных, похожей на JSON, и расширяемыми пользовательскими типами.Учтите: Нет единого зарегистрированного MIME-типа; расширения и дополнительные типы нужно согласовать между сторонами.
Быстрый выбор

Начинайте с задачи, а не с синтаксиса

Публичный веб-APIJSON
Широкая поддержка, предсказуемый синтаксис и зарегистрированный MIME-тип.
Настройки для человекаTOML или YAML
TOML удобен для явных настроек, YAML — для более сложной структуры документа.
Сложные документыXML
Выбирайте, когда важны пространства имён, смешанное содержимое, подписи или зрелые схемы.
Экспорт таблицCSV или TSV
До обмена согласуйте разделитель, кодировку, заголовок, переводы строк и экранирование.
Логи и потокиJSON Lines
Одно независимое значение JSON в строке можно дописывать и обрабатывать постепенно.
Компактная передачаCBOR, Protobuf или MessagePack
Protobuf подходит для контракта со схемой, CBOR и MessagePack — для самоописываемых значений.
Связанные инструменты

Продолжите работу с текстом

Скопируйте символ, преобразуйте разметку, очистите фрагмент или сохраните результат в блокноте.

FAQ

Вопросы о форматах данных

Какой формат выбрать для нового API?

JSON — безопасный вариант по умолчанию для публичного HTTP API благодаря почти повсеместной поддержке и стандартному MIME-типу. Бинарный формат оправдан, когда обе стороны контролируют контракт, а размер или скорость важнее дополнительной сложности.

Правда ли, что YAML — надмножество JSON?

YAML 1.2 проектировался так, чтобы документы JSON принимались как YAML, но версия парсера и детали реализации всё равно важны. Нельзя ожидать от каждого парсера YAML 1.1 поведения YAML 1.2.

Почему один CSV по-разному открывается в разных программах?

В экосистеме CSV различаются разделитель, десятичный знак, кодировка, переводы строк и определение заголовка. RFC 4180 описывает распространённый вариант, а не все существующие диалекты.

Чем JSON Lines отличается от массива JSON?

В JSON Lines каждое значение находится на отдельной строке, поэтому файл удобно дописывать и читать потоком. Весь документ не является одним массивом JSON и разбирается запись за записью.

Делает ли бинарный формат данные безопасными?

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