CBOR / MessagePack 编解码器
JSON 输入
十六进制输出
技术详情
CBOR 与 MessagePack 转换器的工作原理
工具功能
该工具将 JSON 数据编码为 CBOR(Concise Binary Object Representation,简明二进制对象表示)或 MessagePack 二进制格式,并将二进制负载解码回人类可读的 JSON。它会在解码后的结构旁显示原始十六进制字节,便于检查在受限环境中使用的紧凑二进制编码。两种编码方向都支持嵌套对象、数组以及标准 JSON 类型。
常见开发者使用场景
IoT 开发者使用该工具来检查来自 CoAP 消息或 COSE 签名令牌的 CBOR 负载,而无需编写反序列化代码。后端工程师通过粘贴十六进制转储并查看解码后的 JSON,来调试 MessagePack 编码的 WebSocket 帧、Redis 协议缓冲区或 RPC 负载。它也适用于比较 JSON、CBOR 与 MessagePack 之间的负载大小,以便为带宽受限的系统选择最高效的传输格式。
数据格式、类型或变体
CBOR(RFC 8949)是一种自描述的二进制格式,旨在实现更小的代码体积和更小的消息体积,已在 LwM2M 和 FIDO2/WebAuthn 等 IoT 标准中广泛采用。MessagePack 是一种类似的二进制序列化格式,目标是在保持无模式(schema-free)的同时尽可能紧凑,常用于 Redis、Fluentd 以及许多 RPC 框架。两种格式都比 JSON 更紧凑,但为了效率牺牲了人类可读性。
常见陷阱与边界情况
CBOR 支持一些 JSON 无法原生表示的数据类型,例如字节字符串、标签以及不定长度容器——将这些类型通过 JSON 往返转换会丢失类型信息。MessagePack 区分原始字节与 UTF-8 字符串,而 JSON 会将它们折叠为单一的字符串类型。整数精度也可能不同:两种格式都支持任意长度整数,但解码到 JavaScript 时,超过 Number.MAX_SAFE_INTEGER 的部分可能会丢失精度。
何时使用此工具而非代码
将此浏览器工具用于临时检查从网络流量中捕获的二进制负载、调试 IoT 设备消息,或快速比较编码大小。对于应用代码中的生产级序列化,请使用你所用语言的专用库,例如 cbor2(Python)、cbor-x(Node.js)或 msgpack;这些库可处理流式传输、模式校验以及正确的类型映射,而浏览器工具无法提供这些能力。