9

では、BSONはJSONでシリアル化されていますか?

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

しかし、なぜそれはBinary Jsonと呼ばれるのですか?バイナリは何の略ですか?

私は常にバイナリを10101010101に関連付ける傾向があります。しかし、上記のBSONシリアル化形式は101010101010形式ではありませんでした。

ここでのバイナリの意味を誰かが説明してくれるので、なぜバイナリJSONと呼ばれるのか理解できますか?

4

3 に答える 3

20

テキストではなくバイナリです。JSON は人間が判読できるテキストですが、BSON はバイナリ データ (単なるバイト) です。1001010 などのように書き出すこともできますが、一度に各バイトを表示する方が一般的です (つまり、\x16 は 16 進数の 16、つまり 10 進数のバイト 22 です)。基本的に、ここでの「バイナリ」は、それをテキスト データと比較するために使用されますが、実際には特に基数 2 であるとは言えません。

これは、任意のバイナリ データを転送できる状況でのみ BSON を使用できることを意味します。たとえば、BSON を XML ドキュメントに埋め込む場合 (何らかの理由で!)、最初に base64 でエンコードする必要があります。これは、XML がテキストベースの表現であるためです。

于 2010-08-24T07:36:26.443 に答える
4

コンピューター上のすべてのものはあるレベルで「バイナリ」であるため、バイナリは実際には誤称です。ファイルまたはネットワーク ストリーム形式に関して言えば、バイナリは、人間が簡単に理解できないことを意味します。また、コンパクトになる傾向があります。

テキストまたは「人間が読める」(人間が理解できる) ファイルおよびストリーム形式の例:

「バイナリ」ファイルおよびストリーム形式の例:

ここで最も注目すべきことは、人間が理解できる形式は、単純に開いて読み始めると、説明がほとんど必要ないということです。バイナリ ファイル形式を説明するには、本全体が必要になる場合があります :)

ただし、形式は必ずしも純粋に「バイナリ」または純粋に人間が理解できるものではありません。たとえば、1 桁の数字の配列を表す、スペースのない一連の 1 桁の数字を理解できるでしょう。16 個の 3D 頂点の x、y、z 値を表す一連の 48 個の数値 (スペースなし) を「読み取る」ことはできても、おそらく理解できないでしょう。また、エンコードされた「バイナリ」データの Skeet の例があります。特に、より人間が理解できる形式で埋め込まれている場合です。

于 2010-08-24T08:08:24.397 に答える
1

「バイナリ」と呼ばれる理由はすでに説明されています。基本的にはテキストではなく、UNIX スタイルの区別 (バイナリとテキスト ファイル) です。

しかし、BSON は JSON ではなく、サブセットでもスーパーセットでもないため、JSON の部分も奇妙です。さらに多くのデータ型があるため、一種のスーパーセットです。ただし、プロパティ名や文字列値の長さの制限などの制限があるため、すべての正当な JSON をサポートしているわけではありません。

于 2011-01-11T06:58:45.913 に答える