На главную

Кодирование и идентификаторы

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 без потери точности.