JSON + JSON Schema
JSON (JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript.
Ограничения и синтаксис JSON
Допустимые форматы данных для пары "key":"value" в JSON указаны в карточках ниже:
Ключ "key"
string
Значение "value"
string number (integer) object array boolean null
Основные правила синтаксиса:
Данные записываются в виде пар {“ключ”: значение}.
Данные разделяются запятыми.
В фигурных скобках записываются объекты.
В квадратных скобках записываются массивы.
Наименования «ключей» регистрозависимы.
JSON Schema
JSON Schema – это своеобразный язык описания структуры JSON-документации. Базируется на разных концепциях. Выступает в качестве самоописательного языка.
Схема создана для описания JSON-данных, но и сама она при этом является JSON-объектом. С помощью ключевых слов (keywords) в схеме создаются правила валидации структуры объекта и типов его полей.
"Keywords" для описания схемы
Keywords | Описание | Пример |
---|---|---|
| Используется для задания версии драфта схемы | |
| Используется для указания уникального идентификатора документа или его подсхем. | |
| Комментарии к JSON схеме |
"Keywords" зависимые от типа данных
Тип данных: "type": "string"
Тип данных: "type": "string"
Keywords | Описание | Пример JSON Shema | Примеры JSON сообщения |
---|---|---|---|
minLength maxLength | Длину строки string можно ограничить с помощью ключевых слов minLength и maxLength. Для обоих ключевых слов значение должно быть неотрицательным числом. | ||
pattern | Формат строки string можно ограничивать с помощью ключевого слова pattern. Паттерн задается с помощью регулярного выражения RegEx |
Тип данных: "type": "number"
Тип данных: "type": "number"
Keywords | Описание | Пример JSON Shema | Примеры JSON сообщения |
---|---|---|---|
minimum maximum exclusiveMinimum exclusiveMaximum | Диапазон числа number можно ограничивать с помощью ключевых слов. Если x - это проверяемое значение, то должно выполняться следующее:
| ||
multipleOf | Кратность числа number можно ограничивать с помощью multipleOf |
Тип данных: "type": "object"
Тип данных: "type": "object"
Keywords | Описание | Пример JSON Shema | Примеры JSON сообщения |
---|---|---|---|
properties | Тип данных объектов object можно ограничивать с помощью properties в котором прописаны ограничения для каждого объекта | ||
patternProperties | Тип данных объектов object можно ограничивать с помощью шаблонов свойств | ||
additionalProperties | Используется для управления обработкой дополнительных элементов, не входящих ни в properties, ни в patternProperties | ||
required | Ограничение на обязательные объекты object | ||
propertyNames | Формат элементов объекта object можно ограничивать с помощью ключевого слова propertyNames. Паттерн задается с помощью регулярного выражения RegEx | ||
minProperties maxProperties | Количество свойств объекта можно ограничить с помощью ключевых слов |
Тип данных: "type": "array"
Тип данных: "type": "array"
Keywords | Описание | Пример JSON Shema | Примеры JSON сообщения |
---|---|---|---|
items | Ограничение на тип элементов массива (для всего массива) | ||
prefixItems | Ограничение на тип элементов массива (для каждого конкретного индекса массива) | ||
contains | Ограничение на содержание элемента в массиве | ||
minItems maxItems | Ограничение на длину массива |
Пример
Поле | Тип | Обязательность | Описание | |
---|---|---|---|---|
time | string "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}(:[0-9]{2}(\\\\.[0-9]{6})?((-|\\\\+)[0-9]{2}:[0-9]{2})?)?)?$" | Да | Дата и время сообщения | |
eventId | string (255) | Да | Уникальный идентификатор события | |
contactID | string (255) | Да | Идентификатор контакта | |
operationType | string (enum) | Да | Тип операции CREATE, READ, UPDATE, DELETE | |
getFlag | string (1) | Да | Флаг | |
phoneNumber | string (50) pattern: "^([0-9]{10})$" | Да | Номер телефона клиента | |
phoneNumberTimeZone | string (255) | Да | Таймзона клиента | |
scenarioId | string (255) | Да | Номер сценария | |
customAttributeList | Array [Object] | Да | ||
attributeName | string (255) | Да | Идентификатор атрибута cardNum, lockSum, lockCurrency, lockDate | |
attributeValue | string (255) | Да | Значение атрибута |
Источники:
Подробнее про JSON Shema: https://infostart.ru/1c/articles/1546672/
Last updated