BSON 和 JSON 的区别

复制代码
简述:

json,给人看的,文档格式,可读

bson,给机器看的,二进制格式(所以快,内存占用少),不可读

BSON 和 JSON 的区别

|------------|--------------------------------------------------|---------------------------------------|
| 对比项 | JSON | BSON |
| 全称 | JavaScript Object Notation | Binary JSON |
| 格式 | 文本格式(字符串) | 二进制格式 |
| 可读性 | 人类可读 | 机器可读(不可直接阅读) |
| 数据类型支持 | 有限(string, number, boolean, null, object, array) | 更丰富(支持日期、二进制、ObjectId、正则、Timestamp 等) |
| 性能 | 解析慢,存储体积大 | 解析快,支持高效序列化/反序列化 |
| 用途 | 数据传输(如 API 接口) | 数据存储与内部通信(MongoDB 使用) |

✅ 例子:

复制代码
// JSON(纯文本)
{
  "name": "张三",
  "age": 30,
  "createdAt": "2025-01-01T00:00:00Z"  // 只能是字符串
}


// BSON(二进制表示,逻辑上等价于)
{
  "name": "张三",
  "age": 30,
  "createdAt": ISODate("2025-01-01T00:00:00Z"),  // 真正的日期类型
  "_id": ObjectId("507f1f77bcf86cd799439011")   // 特有类型
}

🎯 关键区别总结:

  • BSON 是 JSON 的"超集" + 二进制优化版本
  • MongoDB 存储的是 BSON,网络传输也是 BSON,但你写代码时通常用 JSON 风格操作,驱动会自动转换。
  • 支持更多类型,比如:
    • ObjectId:12 字节唯一 ID
    • Date:真正的日期对象
    • BinData:二进制数据(如图片)
    • Regex:正则表达式对象

💡 类比:JSON 像 .txt 文件,BSON 像 .docx ------ 功能更强、结构更紧凑、机器处理更快。

相关推荐
奔跑的呱呱牛1 天前
arcgis-to-geojson双向转换工具库
arcgis·json
武超杰1 天前
SpringMVC核心功能详解:从RESTful到JSON数据处理
后端·json·restful
还是大剑师兰特2 天前
Vue3 前端专属配置(VSCode settings.json + .prettierrc)
前端·vscode·json
qq_283720052 天前
Cesium实战(三):加载天地图(影像图,注记图)避坑指南
json·gis·cesium
雷帝木木2 天前
Flutter for OpenHarmony:Flutter 三方库 cbor 构建 IoT 设备的极致压缩防窃协议(基于标准二进制 JSON 表达格式)
网络·物联网·flutter·http·json·harmonyos·鸿蒙
长安11082 天前
JsonCpp的编译与使用
json
凌晨一点的秃头猪2 天前
JSON 文件基础介绍
json
凌晨一点的秃头猪2 天前
Python JSON 模块核心函数超详细指南
json
小江的记录本2 天前
【JWT】JWT(JSON Web Token)结构化知识体系(完整版)
前端·网络·web安全·http·网络安全·json·安全架构
早點睡3902 天前
ReactNative项目OpenHarmony三方库集成实战:react-native-json-tree
react native·react.js·json