DevToys Web Pro iconDevToys Web ProБлог
Оцініть нас:
Спробуйте розширення для браузера:

Кодек CBOR / MessagePack

Формат:
Напрям:
Вивід:

Вхідні дані JSON

  • Шістнадцятковий вивід

  • Технічні деталі

    Як працює конвертер CBOR і MessagePack

    Що робить інструмент

    Цей інструмент кодує дані JSON у двійкові формати CBOR (Concise Binary Object Representation) або MessagePack і декодує двійкові корисні навантаження назад у читабельний для людини JSON. Він відображає сирі шістнадцяткові байти поруч із декодованою структурою, що полегшує перевірку компактних двійкових кодувань, які використовуються в обмежених середовищах. Обидва напрями кодування підтримують вкладені об’єкти, масиви та стандартні типи JSON.

    Поширені сценарії використання для розробників

    Розробники IoT використовують цей інструмент, щоб аналізувати корисні навантаження CBOR із повідомлень CoAP або токенів, підписаних COSE, не пишучи код десеріалізації. Backend-інженери налагоджують кадри WebSocket, закодовані MessagePack, буфери протоколу Redis або RPC-корисні навантаження, вставляючи hex-дампи та переглядаючи декодований JSON. Він також корисний для порівняння розмірів корисних навантажень між JSON, CBOR і MessagePack, щоб вибрати найефективніший формат передавання для систем з обмеженою пропускною здатністю.

    Формати даних, типи або варіанти

    CBOR (RFC 8949) — це самодокументований двійковий формат, створений для малого розміру коду та малого розміру повідомлень, широко прийнятий у стандартах IoT, таких як LwM2M і FIDO2/WebAuthn. MessagePack — подібна двійкова серіалізація, що прагне бути максимально компактною, залишаючись безсхемною; її часто використовують Redis, Fluentd та багато RPC-фреймворків. Обидва формати компактніші за JSON, але жертвують читабельністю для людини заради ефективності.

    Поширені помилки та крайові випадки

    CBOR підтримує типи даних, які JSON не може представити нативно, наприклад байтові рядки, теги та контейнери невизначеної довжини — під час round-trip через JSON буде втрачено інформацію про типи. MessagePack розрізняє сирі байти та рядки UTF-8, тоді як JSON зводить їх до одного типу рядка. Точність цілих чисел може відрізнятися: обидва формати підтримують цілі числа довільної довжини, але під час декодування в JavaScript може втрачатися точність за межами Number.MAX_SAFE_INTEGER.

    Коли використовувати цей інструмент, а коли — код

    Використовуйте цей браузерний інструмент для разового аналізу двійкових корисних навантажень, захоплених із мережевого трафіку, налагодження повідомлень IoT-пристроїв або швидкого порівняння розмірів кодування. Для серіалізації у продакшені в коді застосунку використовуйте спеціалізовані бібліотеки на кшталт cbor2 (Python), cbor-x (Node.js) або msgpack для вашої мови, які підтримують стримінг, валідацію схем і коректне зіставлення типів, чого браузерний інструмент надати не може.