UBJSON - UBJSON

UBJSON
Оригинальный автор (ы)Рияд Калла
Стабильный выпуск
Проект 12
Написано вРазличные языки
Операционная системаЛюбой
ПлатформаКроссплатформенность
ТипОбмен данными
ЛицензияApache 2.0
Интернет сайтubjson.org

Универсальный двоичный 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. Также есть безоперационный Тип, используемый для поддержания активности потока.

Числа высокой точности представлены в виде произвольно длинных числовых значений в строковой кодировке 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]

Поддержка программного обеспечения

Смотрите также

Рекомендации

  1. ^ «Типы значений | Универсальная двоичная спецификация JSON». Получено 20 июля 2019.
  2. ^ «Типы контейнеров | Универсальная двоичная спецификация JSON». Получено 20 июля 2019.
  3. ^ «Двоичные данные | Универсальная двоичная спецификация JSON». Получено 20 июля 2019.
  4. ^ а б c "UBJSON (.ubj) - документация на языке вольфрам". Получено 20 июля 2019.
  5. ^ «Формат хранения UBJSON». Получено 20 июля 2019.

внешняя ссылка