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 ------ 功能更强、结构更紧凑、机器处理更快。

相关推荐
历程里程碑15 小时前
Protobuf vs JSON vs XML:小白该怎么选?
xml·大数据·数据结构·elasticsearch·链表·搜索引擎·json
Java成神之路-2 天前
SpringMVC 响应实战指南:页面、文本、JSON 返回全流程(Spring系列13)
java·spring·json
我命由我123452 天前
在 React 项目中,可以执行 npm start 命令,但是,无法执行 npm build 命令
前端·javascript·vue.js·react.js·前端框架·json·ecmascript
带刺的坐椅2 天前
RFC 9535:JSONPath 的标准化之路
java·json·jsonpath·snack4·rfc9535
孙同学20202 天前
如何将 JSON 数据转换为 Excel 工作表
python·json·excel
ID_180079054732 天前
除了 Python,还有哪些语言可以解析 JSON 数据?
开发语言·python·json
电商API&Tina3 天前
跨境电商如何接入1688官方寻源通接口?附接入流程
java·数据库·python·sql·oracle·json·php
神の愛4 天前
利用json-to-ts工具进行转换,放置在typeScript.ts文件中
javascript·typescript·json
BUG_MeDe4 天前
从Json对象中提取某个对象的一点注意--libjson-c
linux·json
HelloTonyGo4 天前
个人游戏笔记本免费“养龙虾”(七)OpenClaw的openclaw.json文件的基本配置
ubuntu·json·配置·读写权限·openclaw