那么BSON JSON是否序列化吧?

{"hello": "world"}"\x16\x00\x00\x00\x02hello\x00 \x06\x00\x00\x00world\x00\x00"

但是为什么它被称为二进制JSON?二进制代表什么?

我总是倾向于将二进制与1010101011相关联。但是上面的BSON序列化格式并不以101010101010形式。

有人可以为我解释一下这里的二进制含义,所以我明白为什么它被称为二进制json?

有帮助吗?

解决方案

它是二进制的,而不是文本。而JSON是可读的文本,而BSON是二进制数据(仅字节)。你 可以 将其写出为1001010等,但是一次显示每个字节更为常见(因此 x16只是十六进制16,即小数小字节22)。基本上“二进制”是用来将其与文本数据进行比较,并不是说它尤其是2。

这意味着您只能在可以运输任意二进制数据的情况下使用BSON。例如,如果您想将BSON嵌入XML文档中(无论出于何种原因!),则必须首先对其进行编码,因为XML是基于文本的表示。

其他提示

二进制确实是一个错误的名称,因为您的计算机上的所有内容在某种程度上都是“二进制”的。在文件或网络流格式方面,二进制是指无法理解的。它也倾向于紧凑。

文本或“人类可读”(人类易于理解的)文件和流格式的示例:

“二进制”文件和流格式的示例:

这里最重要的是,如果您只是开放并开始阅读,那么人类可以理解的格式需要少得多的解释。二进制文件格式可能需要整本书来解释:)

不过,格式不一定纯粹是“二进制”或纯粹可以理解的。例如,您可能可以理解一系列没有空格的单位数字,这些数字代表单位数字的数组。您可能无法理解一系列48个数字(没有空格),这些数字代表16 3D顶点的X,Y和Z值,即使您可以“读取”它们。另外,有气旋的“二进制”数据的示例,特别是如果它以更具人为理解的格式嵌入。

它被称为“二进制”的原因已经解释了:基本上,它不是文本,因此Unix式的区别(二进制与文本文件)。

但是JSON部分也很奇怪,因为BSON不是JSON,它既不是子集也不是超集。它具有更多的数据类型,因此有点超集。但这也不支持所有法律JSON,因为诸如属性名称和字符串值长度限制之类的限制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top