BSON結構,json

來源:互聯網
上載者:User

BSON結構,json

BSON結構

flyfish 2015-7-24


主要解釋bsonspec.org網站上的兩個例子


{"hello": "world"} 


hello為key,world為value 對應的是


  \x16\x00\x00\x00                   
  \x02                               
  hello\x00                          
  \x06\x00\x00\x00world\x00
  \x00 



解釋每一行的意思


\x16\x00\x00\x00 
\x表示16進位的方式
4個位元組表示文檔的大小,包括文檔末尾的'\0','\0'是\x00 0x16十進位是22,這個文檔的大小是22個位元組
採用小端(Little Endian) 原文:Each type must be serialized in little-endian format.
每一種類型必須按照little-endian格式序列化。


\x02
一個位元組表示value的類型,通過查看bsonspec 文檔
原文:"\x02" e_name string UTF-8 
\x02 表示value的類型是string,字串編碼使用的是UTF-8 


hello\x00 
表示以'\0'結尾的字串


\x06\x00\x00\x00world\x00
\\x06\x00\x00\x00 前4個位元組表示以'\0'結尾的字串world的長度

\x00 
結束符


{"BSON": ["awesome", 5.05, 1986]}

原文:the array ['red', 'blue'] would be encoded as the document {'0': 'red', '1': 'blue'}. The keys must be in ascending numerical order.
數組['red', 'blue']將要編碼為{'0': 'red', '1': 'blue'},key必須按照數值大小遞增排序(升序)。
也就是["awesome", 5.05, 1986]將被編碼為{ "0":"awesome", "1":5.05,"2":1986}
{"BSON": [ "0":"awesome", "1":5.05,"2":1986]}

對應是

  \x31\x00\x00\x00
  \x04BSON\x00
  \x26\x00\x00\x00
  \x02\x30\x00\x08\x00\x00\x00awesome\x00
  \x01\x31\x00\x33\x33\x33\x33\x33\x33\x14\x40
  \x10\x32\x00\xc2\x07\x00\x00
  \x00
  \x00



解釋每一行的意思
\x31\x00\x00\x00
4個位元組表示文檔的大小,x31的10進位是49,這個文檔的大小是49個位元組


\x04BSON\x00
原文:"\x04" e_name document Array
\x04表示value的類型是數組表示的document
BSON\x00 表示以'\0'結尾的字串


\x26\x00\x00\x00 
4個位元組表示數組的大小即中括弧的內容,x26的10進位是38


\x02\x30\x00\x08\x00\x00\x00awesome\x00
\x02 表示value的類型是string
x30表示key,字元0的ASCII碼是48,16進位是x30
縱向看正好是x30,x31,x32
\x08\x00\x00\x00  4個位元組表示awesome\x00 長度


\x01\x31\x00\x33\x33\x33\x33\x33\x33\x14\x40

\x01
原文\x01" e_name double 64-bit binary floating point
表示64位的二進位浮點數
x31\x00表示以'\0'結尾的字串1,字元1的ASCII碼是x31
x33\x33\x33\x33\x33\x33\x14\x40
double的5.5轉換成16進位為40 14 33 33 33 33 33 33


\x10\x32\x00\xc2\x07\x00\x00
原文:"\x10" e_name int32 32-bit integer
\x10表示32位的整數
\x32\x00表示以'\0'結尾的字串2,字元2的ASCII碼是x32
\xc2\x07\x00\x00
也就是16進位的7c2轉換成10進位是1986


  \x00

  \x00

結束符











著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.