Самый популярный формат для веб-API и мобильных приложений.
Характеристики:
Пример JSON:
{
"user": {
"id": 123,
"name": "John Doe",
"active": true,
"roles": ["admin", "user"]
}
}
Стандартизированный формат для сложных данных.
Характеристики:
Пример XML:
<user>
<id>123</id>
<name>John Doe</name>
<active>true</active>
<roles>
<role>admin</role>
<role>user</role>
</roles>
</user>
Человекочитаемый формат для конфигураций.
Характеристики:
Пример YAML:
user:
id: 123
name: John Doe
active: true
roles:
- admin
- user
Бинарный формат от Google для высокой производительности.
Характеристики:
Пример .proto-схемы:
message User {
int32 id = 1;
string name = 2;
bool active = 3;
repeated string roles = 4;
}
Бинарная альтернатива JSON.
Характеристики:
Простой табличный формат.
Характеристики:
Пример CSV:
id,name,active
123,"John Doe",true
Критерий | JSON | XML | YAML | Protobuf | MessagePack | CSV |
---|---|---|---|---|---|---|
Читаемость | Высокая | Средняя | Очень высокая | Низкая | Низкая | Средняя |
Размер | Средний | Большой | Средний | Очень маленький | Самый маленький | Маленький |
Скорость | Быстро | Медленно | Средне | Очень быстро | Очень быстро | Быстро |
Схема | Не требуется | Рекомендуется | Не требуется | Обязательна | Не требуется | Не требуется |
Использование | Веб-API | Корп. системы | Конфиги | Микросервисы | Высоконагруженные системы | Табличные данные |
Формат запросов (не совсем формат передачи, но важно упомянуть)
Бинарная версия JSON для MongoDB
Формат для Hadoop и больших данных
выбор формата передачи данных зависит от требований к производительности, читаемости и экосистемы. JSON остается самым популярным для веб-API, тогда как бинарные форматы (protobuf) используются в высоконагруженных системах. XML сохраняет позиции в корпоративном сегменте, а YAML стал стандартом для конфигураций.