2010-08-24 4 views
9

Итак, BSON - это сериализованный JSON?Почему это называется BSON?

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

Но почему он называется Binary Json? Что означает бинарный файл?

Я всегда связываю двоичный код с 10101010101. Но формат сериализации BSON выше не был в форме 101010101010.

Может ли кто-нибудь объяснить мне, что означает двоичный код, поэтому я понимаю, почему он называется Binary JSON?

+3

'10101010101' - это номер в базе 2 (двоичный), не обязательно двоичный« данные ». –

ответ

20

Это двоичный код в отличие от текста. В то время как JSON является человекочитаемым текстом, BSON представляет собой двоичные данные (только байты). Вы можете записать его как 1001010 и т. Д., Но чаще всего показывать каждый байт за раз (так что \ x16 - это только шестнадцатеричный 16, т. Е. Десятичный байт 22). В принципе «двоичный» здесь используется для сравнения его с текстовыми данными, а не для того, чтобы сказать, что это фактически базовая 2 в частности.

Это означает, что вы можете использовать BSON только в ситуациях, когда вы можете передавать произвольные двоичные данные. Например, если вы хотите встроить BSON в XML-документ (по какой-то причине!), Вам придется сначала кодировать его base64, потому что XML представляет собой текстовое представление.

4

Двоичный код действительно является неправильным, поскольку все на вашем компьютере является «двоичным» на некотором уровне. Двоичные, когда дело доходит до форматов файлов или сетевых потоков, означает не-легко-человеческое понимание. Он также имеет тенденцию быть компактным.

Примеров текстового или "видимые" (человек понятно) файлы и потоковые форматы:

Примеры «двоичный "файловые и потоковые форматы:

Дело большинства здесь отметить, что понятные форматы человека нужно гораздо меньше объяснений, если вы просто взломать их открыть и начать чтение. Для двоичных форматов файлов могут понадобиться целые книги для объяснения :)

Формат не обязательно является чисто «двоичным» или чисто понятным для человека. Например, вы, вероятно, понимаете серию однозначных чисел без пробелов, которые представляют собой массив однозначных чисел. Вероятно, вы не могли понять серию из 48 чисел (без пробелов), которые представляют значения x, y и z для 16 трехмерных вершин, даже если вы можете их «прочитать». Кроме того, есть пример кодированных «двоичных» данных Skeet, особенно если он встроен в более понятный для человека формат.

1

Причина, по которой она называется «двоичная», объясняется уже: в основном, она не является текстовой, поэтому различие в стиле unix (двоичные и текстовые файлы).

Но часть JSON также нечетна, так как BSON не является JSON - это не подмножество и не суперсет. Он имеет гораздо больше типов данных, поэтому это своего рода супермножество; но он также не поддерживает все законные JSON из-за ограничений на такие вещи, как имя свойства и ограничения длины строки.

Смежные вопросы