JSON與BSON
JSON中國 | JSON中文網
JSON基于JavaScript語言,是一種輕量級的資料交換格式,是Standard ECMA-262 3rd Edition- December 1999的一個子集,也即 JavaScript語法的一個子集,它是一種類似于C語言結構體的名稱、值對表示方法,支持內娥的檔案物件和陣列物件,資料內容以可嵌套的KV文本形式存盤,資料的結構和內容一目了然, JSON 采用的是完全獨立于編程語言的文本格式來存盤和表示資料,
JSON格式資料中值的型別支持字串、數值、布爾及空值四種基本型別,Object及陣列兩種復雜型別,字串需要用引號括起來,如示例中圖書的名稱,也支持轉義字符內容,布爾型別只有true 和false兩個值,空值采用null表示,陣列使用[ ]包含所有元素,每個元素之間用逗號分隔,可以使用從0開始的索引號訪問其中的元素:元素可以是任意的值,如[ " abe",123,true, null ],這點與C語言傳統意義上的陣列有很大不同,Object 使用{ }包含一系列無序的Key-Value鍵值對表示,其中Key和Value之間用冒號分隔,每個Key-Value之間用逗號分隔,訪問其中的資料時,通過obj. key的形式來獲取對應的Value,Object 或陣列中的值還可以是另一個Object 或者陣列,以表示更復雜的資料,一個用于存盤學生資訊的對 象陣串列示如下,
Student:[{"Name":"a","Province":"b"},
{"Name":"d","Province":"f"}]
JSON格式資料突出的優點就是比較簡單,易于讀寫,層次結構清晰,格式都是壓縮的,占用帶寬小,并且易于程式決議,可以方便地通過JS編程決議處理JSON資料,
JSON基于兩種結構:
- “名稱/值”對的集合(A collection of name/value pairs),不同的編程語言中,它被理解為物件(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵串列(keyed list),或者關聯陣列 (associative array),
- 值的有序串列(An ordered list of values),在大部分語言中,它被實作為陣列(array),矢量(vector),串列(list),序列(sequence),
這些都是常見的資料結構,目前,絕大部分編程語言都以某種形式支持它們,這使得在各種編程語言之間交換同樣格式的資料成為可能,
物件(object) 是一個無序的“‘名稱/值’對”集合,一個物件以“{”(左括號)開始,“}”(右括號)結束,每個“名稱”后跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔,陣列(array) 是值(value)的有序集合,一個陣列以“[”(左中括號)開始,“]”(右中括號)結束,值之間使用“,”(逗號)分隔,
值(value) 可以是雙引號括起來的字串(string)、數值(number)、
true、false、null、物件(object)或者陣列(array),這些結構可以嵌套,等等不一一列舉在上述鏈接中都有(...........)
JSON: JavaScript Object Notation(JavaScript 物件標記法),
JSON 是一種存盤和交換資料的語法,
JSON 是通過 JavaScript 物件標記法書寫的文本,
當資料在瀏覽器與服務器之間進行交換時,這些資料只能是文本,
JSON 屬于文本,并且我們能夠把任何 JavaScript 物件轉換為 JSON,然后將 JSON 發送到服務器,
我們也能把從服務器接收到的任何 JSON 轉換為 JavaScript 物件,
以這樣的方式,我們能夠把資料作為 JavaScript 物件來處理,無需復雜的決議和轉譯,
BSON
這個名字也是緣于JSON(Binary Serialized Document Format),含義為二進制的JSON,BSON由10gen開發,主要被作用MongoDB資料庫中的資料存盤和網路傳輸格式,BSON在資料訪問的性能上有很大的提升,JSON遍歷時需要對檔案進行掃描讀取資料,進行括號等資料結構的匹配,而BSON將每一個元素的長度存在元素的頭部資訊中,這樣基于讀取到的元素長度經過計算就能直接定位到指定的內容上進行讀取,資料訪問效率更高,另外相比JSON的資料型別BSON更加豐富,大大減少了計算開銷和資料大小,操作也更加簡單,當然,有的時候,相對JSON來說,BSON會占用更多的空間,比如:“{“field”:7}”,JSON存盤7只用了一個位元組,而BSON如果采用32位整型,則需要四個位元組,
BSON 與 JSON :
1.BSON包含了JSON沒有的資料型別,比如Date和BinData,
2.BSON需要的存盤空間比JSON少,存盤效率也比JSON高,(輕量)
3.JSON存盤是像字串一樣,而BSON是按結構存盤的(像陣列 或者struct)
4.JSON修改要大動大移,需要掃字串,而BSON就不需要,可以直接定位,(可遍歷)
5. BSON的編碼與解碼速度很快,(高效)
6.某些情況,BSON會犧牲額外的空間讓資料的傳輸更加方便,比如,字串的傳輸的前綴會標識字串的長度,而不是在字串的末尾打上結束的標記,這樣的傳輸形式有利于MongoDB修改傳輸的資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/348332.html
標籤:其他
上一篇:上億用戶量負載均衡架構決議
下一篇:Nginx學習之記憶體管理



等等不一一列舉在上述鏈接中都有(...........)