WikiDer > UBJSON
Эта статья нужны дополнительные цитаты для проверка. (Октябрь 2019) (Узнайте, как и когда удалить этот шаблон сообщения) |
| Оригинальный автор (ы) | Рияд Калла |
|---|---|
| Стабильный выпуск | Проект 12 |
| Написано в | Различные языки |
| Операционная система | Любой |
| Платформа | Кроссплатформенность |
| Тип | Обмен данными |
| Лицензия | Apache 2.0 |
| Интернет сайт | ubjson |
Универсальный двоичный JSON (UBJSON) это компьютер формат обмена данными. Это двоичная форма, непосредственно имитирующая JSON, но требует меньше байтов данных. Он нацелен на достижение универсальности JSON в сочетании с тем, что его намного проще обрабатывать, чем JSON.
Обоснование и цели
UBJSON - предлагаемый преемник BSON, BJSON и другие. UBJSON преследует следующие цели:
- Полная совместимость со спецификацией JSON - между стандартным JSON и UBJSON существует соответствие 1: 1.
- Простота реализации - включая только те типы данных, которые широко поддерживаются в популярных языках программирования, так что нет проблем с некоторыми языками, которые не поддерживаются должным образом.
- Легкость использования - его можно быстро понять и принять.
- Скорость и эффективность - UBJSON использует представления данных, которые (примерно) на 30% меньше, чем их сжатые аналоги JSON, и оптимизированы для быстрого анализа. Поддерживается потоковая сериализация, что означает, что передача UBJSON по сетевому соединению может начать отправку данных до того, как станет известен окончательный размер данных.
Типы данных и синтаксис
Данные UBJSON могут быть либо ценить или контейнер.
Типы значений
UBJSON использует один двоичный кортеж для представления всех типов значений JSON:[1]
тип [длина] [данные]
Каждый элемент в кортеже определяется как:
тип
Тип - 1-байтовый ASCII символ, используемый для обозначения типа следующих за ним данных. Символы ASCII были выбраны, чтобы максимально упростить ручной обход и отладку данных, хранящихся в формате UBJSON (например, сделать данные относительно читаемыми в шестнадцатеричном редакторе). Доступны типы для пяти типов значений JSON. Также есть безоперационный Тип, используемый для поддержания активности потока.
- Ноль:
Z - Нет операции:
N- нет операции, игнорируется принимающей стороной - Булевы типы: истинный (
Т) и ложь (F) - Числовые типы: int8 (
я), uint8 (U), int16 (я), int32 (л), int64 (L), float32 (d), float64 (D), и высокая точность (ЧАС) - ASCII персонаж:
C - UTF-8 нить:
S
Числа высокой точности представлены в виде произвольно длинных числовых значений в строковой кодировке UTF-8.
длина (необязательно)
Длина - это целое число (например, uint8 или int64), кодирующее размер полезной нагрузки данных в байтах. Он используется для строк, чисел высокой точности и, возможно, контейнеров. Для других типов они опущены.
Длина кодируется по тому же соглашению, что и целые числа, таким образом, включая собственный тип. Например, строка Привет кодируется как S,U, 0x05,час,е,л,л,о.
данные (необязательно)
Последовательность байтов, представляющая фактические двоичные данные для этого типа значения. Все числа в прямой порядок байтов порядок.
Типы контейнеров
Подобно JSON, UBJSON определяет два типа контейнеров: множество и объект.[2]
Массивы - это упорядоченные последовательности элементов, представленные в виде [ за которым следует ноль или более элементов значения и типа контейнера и завершающий ].
Объекты - это помеченные наборы элементов, представленные в виде { за которым следует ноль или более пар ключ-значение и завершающий }. Каждый ключ представляет собой строку с S символ опущен, и каждое «значение» может быть любым элементом значения или типа контейнера.
В качестве альтернативы массивы и объекты могут указывать количество содержащихся в них элементов как # за которым следует целое число перед их первым элементом, и в этом случае конечный ] или же } опущено. Кроме того, если все элементы имеют один и тот же тип, типы могут быть опущены и заменены одним $ за которым следует тип, и в этом случае сразу должно следовать количество элементов. Например, массив ["a", "b", "c"] может быть представлен как [,$,C,#,U, 0x03,а,б,c.
Двоичные данные
Хотя явного двоичного типа нет, двоичные данные хранятся в строго типизированный массив значений uint8. Это обеспечивает бинарную эффективность при сохранении совместимости с JSON, даже если JSON не имеет прямой поддержки бинарных данных.[3][4]
Представление
В Тип MIME Рекомендуется 'application / ubjson', как и расширение файла '.ubj' при хранении в файловой системе.[4]
Поддержка программного обеспечения
- Терадата База данных[5]
- В Язык Wolfram Language представила поддержку UBJSON в 2017 году с версией языка 11.1.[4]
Смотрите также
Рекомендации
- ^ «Типы значений | Универсальная двоичная спецификация JSON». Получено 20 июля 2019.
- ^ «Типы контейнеров | Универсальная двоичная спецификация JSON». Получено 20 июля 2019.
- ^ «Двоичные данные | Универсальная двоичная спецификация JSON». Получено 20 июля 2019.
- ^ а б c "UBJSON (.ubj) - документация на языке вольфрам". Получено 20 июля 2019.
- ^ «Формат хранения UBJSON». Получено 20 июля 2019.