Format Atlas

对比

CBOR 与 JSON

CBOR 是一种扩展 JSON 数据模型的二进制交换格式,可表示字节串和标签等值。JSON 是便于阅读的文本交换格式,广泛用于 Web API 和配置工具。

应该选择哪种格式?

需要人工编辑或检查的文本,以及兼容现有 JSON API 时选择 JSON。协议需要紧凑二进制数据、字节串、扩展类型或确定性编码时,可考虑 CBOR。

适用于 CBOR

在受限设备和网络中交换结构化数据 · 在 COSE 和物联网协议中表示数据

  • 以紧凑二进制形式表示类似 JSON 的数据
  • 使用标准标签或应用自定义标签说明值的含义

适用于 JSON

Web API、配置文件和数据交换

  • 传递结构化数据

基本信息

项目CBORJSON
扩展名.cbor.json
MIME 类型application/cborapplication/json
常见用途在受限设备和网络中交换结构化数据 · 在 COSE 和物联网协议中表示数据Web API、配置文件和数据交换
打开方式使用 CBOR 程序库或解码器读取,再通过诊断表示或类似 JSON 的视图检查内容。对于标签和字节串等无法直接映射到 JSON 的值,应确认其显示方式。可使用文本编辑器、IDE或支持JSON的查看器打开。
导出或转换转换为 JSON 时,字节串和带标签的值可能需要工具专用的表示方式,因为 JSON 没有直接对应类型。用于签名、哈希或缓存键时,应遵循协议约定的编码规则,例如 RFC 8949 中的确定性编码。可使用应用程序或转换工具将其转换为CSV等格式。

按用途选择

以紧凑二进制形式表示类似 JSON 的数据

在受限设备和网络中交换结构化数据 · 在 COSE 和物联网协议中表示数据

CBOR

使用标准标签或应用自定义标签说明值的含义

在受限设备和网络中交换结构化数据 · 在 COSE 和物联网协议中表示数据

CBOR

传递结构化数据

Web API、配置文件和数据交换

JSON

关键点 1

JSON 是字符表示的文本;CBOR 数据项是二进制字节。CBOR 可直接表示整数、字节串和标签,而 JSON 通常需用 base64 字符串等约定表示二进制值。

进一步了解差异

关键点 2

RFC 8259 JSON 定义对象、数组、字符串、数字、布尔值和 null,不要求应用模式。CBOR 增加带标签的值,数据模型超出 JSON。

进一步了解差异

进一步了解差异

可检查的文本接口和广泛工具支持适合 JSON。需要字节串、标签或确定性编码的二进制协议可用 CBOR。双方应约定标签含义、数值范围、规范化规则和库支持。

  • CBOR 诊断表示用于调试,实际交换的是二进制数据项;JSON 交换的是文本。
  • CBOR 转 JSON 可能丢失标签、字节串区别、整数表示、数值精度或确定性编码属性。
  • 明确未知标签、大整数、重复 map 键以及 JSON 无直接对应值的处理方式,并用真实消息测试双方实现。

常见问题

CBOR 只是压缩后的 JSON 吗?

不是。CBOR 有独立的二进制数据模型,支持 JSON 无法原生表示的字节串和标签等值。

了解详情

参考资料与规范