JSON和BSON的区别

 
JSON 和 BSON 从名称上来看仅有一个字母的差别,非常相似,那么它们之间有什么区别呢?本节我们就来简单介绍一下。

什么是 JSON?

JSON 全称“JavaScript Object Notation”,译为“JavaScript 对象简谱”或“JavaScript 对象表示法”,是一种轻量级的、基于文本的、开放的数据交换格式,主要用来在浏览器和服务器之间进行通信。

下面展示了一个简单的 JSON 数据:
{
    "title":"JSON教程",
    "author":"C语言中文网",
    "url":"http://c.biancheng.net/",
    "catalogue":[
        "JSON是什么?",
        "JSONP是什么?",
        "JSON语法规则"
    ]
}
有关 JSON 的详细介绍,您可以阅读《JSON是什么?》一节。

什么是 BSON?

BSON 全称“Binary Serialized Document Format”,译为“二进制序列化文档格式”,是由 10gen(一家公司的名称)开发的一种数据格式,目前主要用于 MongoDB 数据库中,是 MongoDB 的数据存储格式。

BSON 基于 JSON,在 JSON 的基础上进行了升级,支持更多的数据类型。有时也将 BSON 称为“Binary JSON”,即“二进制 JSON”。

注意:BSON 并非只能用于 MongoDB,它也可以在其它编程语言中使用。

与 JSON 相比,BSON 存取的效率更高,而且占用的空间更小。另外,除了支持 JSON 中的数据类型外,BSON 还支持日期(Date)和二进制(BinData)等类型。

JSON 与 BSON 之间的区别

JSON 和 BSON 之间最主要的区别如下表所示:

JSON BSON
JSON 是 javascript 对象表示法 BSON 是二进制 JSON
是一种轻量级的、基于文本的、开放的数据交换格式 是一种二进制序列化文档格式
JSON 包含一些基本数据类型,如字符串、数字、布尔值、空值 除了支持 JSON 中的类型外,BSON 还包含一些额外的数据类型,例如日期(Date)、二进制(BinData)等
AnyDB、redis 等数据库将数据存储为 JSON 格式 MongoDB 中将数据存储为 BSON 格式
主要用于传输数据 主要用于存储数据
没有响应的编码和解码技术 有专用的编码和解码技术
如果想从 JSON 文件中读取指定信息,需要遍历整个数据 在 BSON 中,可以使用索引跳过到指定内容
JSON 格式不需要解析,因为它是人类可读的 BSON 需要解析,因为它是二进制的
JSON 是对象和数组的组合,其中对象是键值对的集合,而数组是元素的有序列表 BSON 是二进制数据,在其中可以存储一些附加信息,例如字符串长度、对象类型等