JSON与CBOR序列化疑问:JSON字符串是否需转换为字节?
JSON与CBOR序列化的核心差异及你的疑问解答
第一个问题:JSON字符串是否需要转成字节才能存储/传输?
是的,必须转成字节序列。
计算机的存储介质(硬盘、内存)和网络传输都是以二进制字节为基本操作单位的,JSON字符串只是面向开发者的高层文本抽象。当你要把JSON字符串存到文件或者通过网络发送时,序列化器会把它编码成字节(通常用UTF-8编码);反过来读取时,又要把字节解码回字符串再解析成对象。这一步编码/解码是绕不开的。
第二个问题:二进制序列化更快的原因是不是直接生成二进制?
直接生成二进制是原因之一,但不是全部,核心优势来自这几点:
- 省去字符串编码/解码的额外开销:JSON的流程是「对象→文本字符串→字节」,反序列化是「字节→文本字符串→对象」,多了两次字符串与字节的转换步骤;而CBOR这类二进制序列化是「对象→字节」直接完成,反序列化也直接从字节转对象,少了一层中间转换的性能损耗。
- 更紧凑的二进制格式:JSON用文本表示所有数据,比如一个整数
100000需要6个字符(对应6个字节的UTF-8编码),而CBOR用可变长度的二进制整数表示,只需要3个字节;另外JSON的键名会重复存储,CBOR支持用标签复用键名,进一步缩小体积——更小的体积意味着存储时占用更少空间,传输时更快,解析时处理的数据量也更少。 - 解析效率更高:JSON解析需要逐字符处理语法规则(比如识别引号、逗号、冒号,处理字符串转义),逻辑复杂;CBOR的二进制格式自带明确的类型标识(比如一个字节就表示这是整数、字符串还是数组),解析器可以直接按固定格式读取对应长度的数据,无需做大量文本语法分析,速度自然更快。
内容的提问来源于stack exchange,提问作者marco890
相关产品推荐
相关产品推荐

