На главную
Кодирование и идентификаторы
MessagePack, CBOR и Protobuf
MessagePack и CBOR в JSON и обратно, а Protobuf — разбор без схемы, как protoc --decode_raw. Всё в браузере.
JSON
{
"id": 150,
"name": "Алиса",
"active": true,
"roles": [
"admin",
"editor"
],
"score": 4.5,
"created": "2026-09-01T10:00:00Z",
"avatar": null
}102 байта на входе, компактный JSON занял бы 130 байт.
Чем форматы отличаются
- MessagePack — «двоичный JSON»: те же объекты и массивы, но числа и короткие строки занимают 1–3 байта. Даты — расширение −1.
- CBOR (RFC 8949) — то же семейство, но стандарт IETF: теги для дат и больших чисел, строки неопределённой длины. Его используют WebAuthn и COSE.
- Protobuf хранит только номера полей и типы провода; имена и смысл — в .proto-схеме. Поэтому разбор без схемы честно показывает все варианты.
- Кодировщик пишет самые короткие формы: целое — минимальным числом байт, дробное в CBOR — самым коротким из float16/32/64 без потери точности.