UBJSON

редактировать
UBJSON
Автор (ы) Рияд Калла
Стабильная версия Черновик 12
Написано наНа разных языках
Операционная система Любая
Платформа Межплатформенный
Тип Обмен данными
Лицензия Apache 2.0
Веб-сайтubjson.org

Universal Binary JSON (UBJSON ) - это формат обмена данными компьютер. Это двоичная форма, имитирующая JSON, но требующая меньшего количества байтов данных. Он нацелен на достижение универсальности JSON в сочетании с тем, что его намного проще обрабатывать, чем JSON.

Содержание
  • 1 Обоснование и цели
  • 2 Типы данных и синтаксис
    • 2.1 Типы значений
      • 2.1.1 тип
      • 2.1.2 длина (необязательно)
      • 2.1.3 данные ( необязательно)
    • 2.2 Типы контейнеров
    • 2.3 Двоичные данные
  • 3 Представление
  • 4 Поддержка программного обеспечения
  • 5 См. также
  • 6 Ссылки
  • 7 Внешние ссылки
Обоснование и цели

UBJSON является предлагаемым преемником BSON и других. UBJSON преследует следующие цели:

  • Полная совместимость со спецификацией JSON - существует соответствие 1: 1 между стандартным JSON и UBJSON.
  • Простота реализации - включая только типы данных, которые широко поддерживаются в популярном программировании. языков, чтобы не было проблем с некоторыми языками, которые не поддерживаются должным образом.
  • Простота использования - его можно быстро понять и принять.
  • Скорость и эффективность - UBJSON использует представления данных, которые ( примерно) на 30% меньше, чем их сжатые аналоги JSON, и оптимизированы для быстрого разбора. Поддерживается потоковая сериализация, что означает, что при передаче UBJSON по сетевому соединению может начаться отправка данных до того, как станет известен окончательный размер данных.
Типы данных и синтаксис

Данные UBJSON могут быть либо значением, либо контейнер.

Типы значений

UBJSON использует один двоичный кортеж для представления всех типов значений JSON:

тип [длина] [данные]

Каждый элемент в Кортеж определяется как:

тип

Тип - это 1-байтовый символ ASCII, используемый для обозначения типа данных, следующих за ним. Символы ASCII были выбраны, чтобы максимально упростить ручной обход и отладку данных, хранящихся в формате UBJSON (например, сделать данные относительно читаемыми в шестнадцатеричном редакторе). Доступны типы для пяти типов значений JSON. Также существует тип no-op, используемый для поддержания активности потока.

высокая точность числа представлены в виде произвольно длинного числового значения в кодировке UTF-8.

длина (необязательно)

Длина - это целое число (например, uint8 или int64), кодирующее размер полезной нагрузки данных в байтах. Он используется для строк, чисел высокой точности и, возможно, контейнеров. Для других типов они опущены.

Длина кодируется по тому же соглашению, что и целые числа, таким образом, включая ее собственный тип. Например, строка helloкодируется как S,U, 0x05, h,e,l,l,o.

data (необязательно)

Последовательность байтов, представляющая фактические двоичные данные для этого типа значения. Все числа расположены в порядке обратным порядком байтов.

Типы контейнеров

Подобно JSON, UBJSON определяет два типа контейнеров: массив и объект.

Массивы - это упорядоченные последовательности элементов, представленные как [, за которым следует ноль или более элементов значения и типа контейнера и завершающий ].

Объекты - это помеченные наборы элементов, представленные в виде {, за которым следует ноль или более пар ключ-значение и завершающий }. Каждый ключ представляет собой строку с опущенным символом S, и каждое «значение» может быть любым элементом значения или типа контейнера.

В качестве альтернативы массивы и объекты могут указывать количество содержащихся в них элементов как #, за которым следует целое число перед их первым элементом, и в этом случае завершающий ]или }опущено. Кроме того, если все элементы имеют один и тот же тип, типы могут быть опущены и заменены одним $, за которым следует тип, и в этом случае количество элементов должно следовать немедленно. Например, массив ["a", "b", "c"] может быть представлен как [,$,C,#,U, 0x03, a,b,c.

Двоичные данные

Хотя явного двоичного типа нет, двоичные данные хранится в строго типизированном массиве значений uint8. Это обеспечивает бинарную эффективность при сохранении совместимости с JSON, даже если JSON не имеет прямой поддержки бинарных данных.

Представление

Рекомендуется MIME-тип 'application / ubjson', как и расширение файла '.ubj' при хранении в файловой системе.

Поддержка программного обеспечения
  • Teradata База данных
  • Представлен Wolfram Language поддержка UBJSON в 2017 г. с версией языка 11.1.
См. также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-20 05:33:07
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте