2010-08-24 7 views
9

Alors BSON est sérialisé JSON?Pourquoi s'appelle-t-on BSON?

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

Mais pourquoi est-il appelé binaire JSON? Que signifie binaire?

J'ai toujours tendance à associer binaire avec 10101010101. Mais le format de sérialisation BSON ci-dessus n'était pas sous la forme 101010101010.

Quelqu'un pourrait-il expliquer pour moi ce que le binaire signifie ici, donc je comprends pourquoi il s'appelle Binary JSON?

+3

'10101010101' est un nombre en base 2 (binaire), pas nécessairement binaire" données ". –

Répondre

20

C'est binaire par opposition au texte. Alors que JSON est un texte lisible par l'homme, BSON est une donnée binaire (juste des octets). Vous pouvez l'écrire comme 1001010 etc, mais il est plus commun d'afficher chaque octet à la fois (donc \ x16 est juste hexadécimal 16, c'est-à-dire l'octet décimal 22). Fondamentalement "binaire" ici est utilisé pour le comparer avec des données textuelles, pour ne pas dire que c'est en fait la base 2 en particulier. Cela signifie que vous ne pouvez utiliser BSON que dans des situations où vous pouvez transporter des données binaires arbitraires. Par exemple, si vous voulez intégrer BSON dans un document XML (quelle qu'en soit la raison!), Vous devrez d'abord le coder en base64, car XML est une représentation textuelle.

4

Binaire est vraiment un abus de langage, puisque tout sur votre ordinateur est "binaire" à un certain niveau. Binaire, quand il s'agit de fichiers ou de formats de flux de réseau, signifie pas facilement compréhensible pour l'homme. Il a également tendance à être compact.

Des exemples de textes ou "lisibles par l'homme" fichier (compréhensibles humaines) et les formats flux:

Exemples de « binaire "formats de fichiers et de flux:

La chose la plus noter est ici que les formats compréhensibles de l'homme ont besoin de beaucoup moins d'explications si vous les cassez simplement ouvrez et commencez à lire. Les formats de fichiers binaires peuvent nécessiter des livres entiers pour expliquer :)

Un format n'est pas nécessairement purement «binaire» ou purement humain, cependant. Par exemple, vous pourriez probablement comprendre une série de nombres à un chiffre sans espaces, qui représentent un tableau de nombres à un seul chiffre. Vous ne pourriez probablement pas comprendre une série de 48 nombres (sans espaces), qui représentent les valeurs x, y et z de 16 sommets 3D, même si vous pouvez les "lire". En outre, il existe un exemple de données «binaires» encodées par Skeet, en particulier si elles sont intégrées dans un format plus humain.

1

La raison pour laquelle il est appelé 'binaire' est déjà expliquée: fondamentalement, il n'est pas textuel, d'où la distinction de type unix (fichiers binaires vs textes).

Mais la partie JSON est également étrange, puisque BSON n'est PAS JSON - ce n'est ni un sous-ensemble ni un sur-ensemble. Il a beaucoup plus de types de données, donc c'est une sorte de superset; mais il ne prend pas en charge tous les JSON légaux en raison de limitations sur des choses telles que le nom de propriété et les limitations de longueur de valeur de chaîne.