Jump to content

УБЖСОН

УБЖСОН
Оригинальный автор(ы) Еще одна мечта
Стабильная версия
Проект 12
Написано в Различные языки
Операционная система Любой
Платформа Кросс-платформенный
Тип Обмен данными
Лицензия Апач 2.0
Веб-сайт убджсон .org

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

Обоснование и цели

[ редактировать ]

UBJSON — предлагаемый преемник BSON , BJSON и других. UBJSON преследует следующие цели:

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

Типы данных и синтаксис

[ редактировать ]

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

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

[ редактировать ]

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

   type [length] [data]

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

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

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

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

[ редактировать ]

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

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

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

[ редактировать ]

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

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

[ редактировать ]

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

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

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

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

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

[ редактировать ]

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

Представительство

[ редактировать ]

Рекомендуется использовать тип MIME «application/ubjson», а также расширение файла «.ubj» при хранении в файловой системе. [4]

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

[ редактировать ]

См. также

[ редактировать ]
  1. ^ «Типы значений | Универсальная двоичная спецификация JSON» . Проверено 20 июля 2019 г.
  2. ^ «Типы контейнеров | Универсальная двоичная спецификация JSON» . Проверено 20 июля 2019 г.
  3. ^ «Двоичные данные | Универсальная двоичная спецификация JSON» . Проверено 20 июля 2019 г.
  4. ^ Перейти обратно: а б с «UBJSON (.ubj) — документация по языку Wolfram» . Проверено 20 июля 2019 г.
  5. ^ «Формат хранения UBJSON» . Проверено 20 июля 2019 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6db078df6f15b05e83d9b2abd528dfb3__1705379640
URL1:https://arc.ask3.ru/arc/aa/6d/b3/6db078df6f15b05e83d9b2abd528dfb3.html
Заголовок, (Title) документа по адресу, URL1:
UBJSON - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)