You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSON二进制表示、类型恢复及BSON相关技术疑问咨询

JSON与BSON:序列化/反序列化及类型恢复详解

JSON的二进制表示

JSON本质是文本格式,序列化后的二进制形式就是它的UTF-8编码(JSON规范推荐使用UTF-8,也是业界最常用的实现)。举个例子:

  • 数字5序列化后就是UTF-8字符'5'(十六进制0x35)
  • 字符串"5"序列化后是'"'(0x22) + '5' + '"'的UTF-8字节序列

注意:JSON语法要求字符串必须用双引号包裹,单引号'5'属于不合法的JSON格式。

反序列化如何恢复数据类型

反序列化不是单纯靠“有无引号”瞎推断,而是严格遵循JSON的语法规则做解析:

  • 解析器会按顺序扫描字符,识别不同类型的语法特征:
    • 无引号包裹、符合数字语法(可选正负号、整数/小数结构、可选指数部分)的内容,会被判定为数字类型
    • 双引号包裹的内容直接识别为字符串
    • 同时还会精准识别true/false/null、数组[]、对象{}等其他类型
  • 现代JSON解析器(比如浏览器的JSON.parse、Python的json模块)都是高度优化的实现,采用状态机或编译后的解析逻辑处理,速度非常快,完全不存在“相当缓慢”的问题。

BSON的核心差异

BSON是专门设计的二进制序列化格式,和JSON的核心区别在于:

  • BSON会给每个字段附加一个类型标识字节,比如用0x01表示双精度数,0x02表示字符串
  • 反序列化时直接读取类型标识就能确定数据类型,不需要像JSON那样解析文本语法,在大数据量场景下性能更优,这也是MongoDB选择BSON作为存储格式的原因之一。

内容的提问来源于stack exchange,提问作者user12582392

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:40:46