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

Кодек CBOR / MessagePack

Формат:
Направление:
Вывод:

Ввод JSON

  • Вывод в hex

  • Технические детали

    Как работает конвертер 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 не может представить нативно, например байтовые строки, теги и контейнеры неопределённой длины — при круговом преобразовании через JSON будет потеряна информация о типах. MessagePack различает сырые байты и строки UTF-8, тогда как JSON сводит их к единому строковому типу. Точность целых чисел может отличаться: оба формата поддерживают целые числа произвольной длины, но при декодировании в JavaScript возможна потеря точности за пределами Number.MAX_SAFE_INTEGER.

    Когда использовать этот инструмент, а когда — код

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