JSON&BSON介绍


  • 註冊用戶

    1. JSON简介

    • JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

    2. JSON语法
    2.1 JSON语法规则

    • JSON 语法是 JavaScript 对象表示语法的子集。
      数据在键值对中,数据由逗号分隔,花括号保存对象,方括号保存数组。例如:
    {"name":"jason","sex":1}
    

    2.2 JSON 名称/值对

    • JSON 数据的书写格式是:名称/值对。
      名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:
    "firstName":"jason"
    

    这很容易理解,等价于这条 JavaScript 语句:

    firstName="jason"
    

    2.3 JSON 值

    • JSON 值可以是:
      数字(整数或浮点数),字符串(在双引号中),逻辑值(true 或 false)
      数组(在方括号中),对象(在花括号中),null

    3. JSON基础结构

    • JSON简单说就是JavaScript中的对象和数组,通过对象和数组可以表示各种复杂的结构。
    • 对象:
      对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。例如:
    {"FirstName":"jason","LastName":"wcchang","email":"aa@aa"}
    
    • 数组:
      数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
      经过对象、数组2种结构就可以组合成复杂的数据结构了。例如:
    {"people":[  {"FirstName":"jason","LastName":"wcchang","email":"aa@aa"}, 
    {"FirstName":"lorranie","LastName":"li","email":"bb@bb"}, 
    {"FirstName":"jesse","LastName":"shi","email":"cc@cc"} ] }
    

    4. BSON简介

    • BSON是一种类JSON的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。
    • BSON可以做为网络数据交换的一种存储形式,这个有点类似于Google的Protocol Buffer,但是BSON是一种schema-less的存储形式。

    5. BSON优缺点

    • 它的优点是灵活性高,但它的缺点是空间利用率不是很理想。

    6. BSON特点

    • BSON有三个特点:轻量性、可遍历性、高效性。

    7. JSON&BSON区别:

    • 对JSON格式来说,太大的JSON结构会导致数据遍历非常慢。在JSON中,要跳过一个文档进行数据读取,需要对此文档进行扫描才行,需要进行麻烦的数据结构匹配,比如括号的匹配,而BSON对JSON的一大改进就是,它会将JSON的每一个元素的长度存在元素的头部,这样你只需要读取到元素长度就能直接查找到指定的点上进行读取了。
    • 对JSON来说,数据存储是无类型的,比如你要修改基本一个值,从9到10,由于从一个字符变成了两个,所以可能其后面的所有内容都需要往后移一位才可以。而使用BSON,你可以指定这个列为数字列,那么无论数字从9长到10还是100,我们都只是在存储数字的那一位上进行修改,不会导致数据总长变大。当然,在MongoDB中,如果数字从整形增大到长整型,还是会导致数据总长变大的。
    • 当然,在有的时候,BSON相对JSON来说也并没有空间上的优势,比如对{“sex”:1},在JSON的存储上1只使用了一个字节,而如果用BSON,那就是至少4个字节(32位)

登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待