Проекты‎ > ‎USDS‎ > ‎

USDS 1.0*

Стандарт USDS 1.0 состоит из следующих частей:
  1. Спецификация текстового словаря
  2. Спецификация бинарных документов USDS

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

USDS (или $S) - Universal serialized data structures - универсальные сериализованные структуры данных, бинарный формат, способный полностью заменить XML и JSON. Основные отличия USDS от форматов XML и JSON:

  • Вместо текстовых тегов/ключей используются целые числа. Соотношение "Имя" - "Целочисленный идентификатор" задается отдельно, в "Словаре". Словарь может быть прикреплен к документу USDS или может быть передан отдельно.
  • Нет закрывающих тегов, как в XML;
  • Документы USDS формируются строго по схеме, которая также задается в Словаре. Поддерживаются полиморфизм и опциональные поля.
  • Числовые значения в документе USDS хранятся в бинарном виде (не как текст).
Ниже приведен пример бинарного USDS документа:

Заголовок (Head) USDS включает в себя:

  • Сигнатуру '$S';
  • версию стандарта USDS (1.0);
  • идентификатор словаря: это поле используется для передачи Соваря (Dictionary) и Тела (Body) отдельно;
  • версию словаря (1.0): используйте эти параметры для задания версии API в вашем проекте;
  • размер всего документа USDS (исключая заголовок).

Словарь начинается с сигнатуры 'D' и может отсутствовать в документе. Примеру выше соответствует следующий словарь:

USDS DICTIONARY ID=888 v.1.0
{
    1: STRUCT Voucher
    {
        1: VARINT number;
        2: STRING<UTF-8> name;
    } RESTRICT {
notRoot;}

    2: STRUCT Sale
    {
        
1: LONG start;
        2: ARRAY<Voucher> sales;
    }
}

Словарь содержит имена тегов и их полей, а также типы данных полей. Некоторые типы могут потребовать указать для них размер (массивы, строки), для строк дополнительно указывается их кодировка.

Тело документа начинается с сигнатуры 'B' и может отсутствовать в документе (если передается только словарь). Если бинарную структуру из примера выше преобразовать в XML, то будет получен следующий текст:

<Sale>
    <start>99999999</start>
    <sales>
        <Voucher number="127" name="Hello "/>
        <Voucher number="128" name="world!"/>
    </sales>
</Sale>

В теле документа может быть несколько корневых тегов, они могут иметь разные типы данных.

2015.07.31, Andrey Abramov
Последнее редактирование: 2015.11.02
CC BY 4.0

Comments

Не удалось найти URL спецификации гаджета