所以BSON是JSON序列化的权利?为什么叫做BSON?
{"hello": "world"}
→"\x16\x00\x00\x00\x02hello\x00 \x06\x00\x00\x00world\x00\x00"
但为什么叫二进制Json的?二进制代表什么?
我总是倾向于将二进制与10101010101关联。但是上面的BSON序列化格式不是101010101010格式。
有人能为我解释这里的Binary是什么意思,所以我明白为什么它被称为二进制JSON?
所以BSON是JSON序列化的权利?为什么叫做BSON?
{"hello": "world"}
→"\x16\x00\x00\x00\x02hello\x00 \x06\x00\x00\x00world\x00\x00"
但为什么叫二进制Json的?二进制代表什么?
我总是倾向于将二进制与10101010101关联。但是上面的BSON序列化格式不是101010101010格式。
有人能为我解释这里的Binary是什么意思,所以我明白为什么它被称为二进制JSON?
它与文本相反是二元的。 JSON是人类可读的文本,而BSON是二进制数据(只是字节)。你可能把它写成1001010等,但是一次显示每个字节更为常见(所以\ x16只是十六进制16,即十进制字节22)。基本上“二进制”在这里用来比较它与文本数据,而不是说它实际上是基数2。
这意味着您只能在可以传输任意二进制数据的情况下使用BSON。例如,如果您想将BSON嵌入到XML文档中(无论出于何种原因!),您必须先对base64进行编码,因为XML是基于文本的表示形式。
二进制文件实际上是一个误称,因为计算机上的所有内容在某个级别上都是“二进制”的。二进制文件,当涉及到文件或网络流格式时,意味着不易理解。它也趋于紧凑。文本的
实例或 “人类可读”(人类可理解)文件和流格式:
的“二进制实例“文件和流格式:
这里最值得注意的问题是,人类可以理解的格式需要少了很多的解释,如果你简单地破解它们打开并开始阅读。二进制文件格式可能需要整本书来解释:)
虽然格式不一定是纯粹的“二元”或纯粹人类可以理解的。例如,您可能可以理解一系列没有空格的单数位数字,它们表示一个数字的数字。你可能无法理解一系列48个数字(没有空格),它们代表16个3d顶点的x,y和z值,即使你可以“读取”它们。此外,还有Skeet编码的“二进制”数据的例子,特别是如果它嵌入了更人性化的可理解格式。
它被称为'二进制'的原因已被解释:基本上,它不是文本的,因此unix风格的区别(二进制文本文件)。
但是JSON部分也很奇怪,因为BSON不是JSON - 它既不是子集也不是超集。它有更多的数据类型,所以它是超集;但由于属性名称和字符串值长度限制等因素的限制,它也不支持所有合法的JSON。
'10101010101'是基数2(二进制)中的数字,不一定是二进制“数据”。 – 2010-08-24 07:47:00