JSON + JSON Schema

JSON (JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript.

Ограничения и синтаксис JSON

Допустимые форматы данных для пары "key":"value" в JSON указаны в карточках ниже:

Ключ "key"

string

Значение "value"

string number (integer) object array boolean null

Основные правила синтаксиса:

  1. Данные записываются в виде пар {“ключ”: значение}.

  2. Данные разделяются запятыми.

  3. В фигурных скобках записываются объекты.

  4. В квадратных скобках записываются массивы.

  5. Наименования «ключей» регистрозависимы.

Пример JSON
{
    "students": [
        {
            "id": 101,
            "name": "Max",
            "score": {
                "Math": 90,
                "Science": 80,
                "Compute": 70
            }
        },
        {
            "id": 102,
            "name": "Sam",
            "score": {
                "Math": 76,
                "Science": 80,
                "Compute": 66
            }
        }
        ],
    "name_school": "EKB Lyceum",
    "name_teacher": "TO"
}

JSON Schema

JSON Schema – это своеобразный язык описания структуры JSON-документации. Базируется на разных концепциях. Выступает в качестве самоописательного языка.

Схема создана для описания JSON-данных, но и сама она при этом является JSON-объектом. С помощью ключевых слов (keywords) в схеме создаются правила валидации структуры объекта и типов его полей.

Простой пример JSON
Пример простой JSON Schema

"Keywords" для описания схемы

Keywords
Описание
Пример

"$schema"

Используется для задания версии драфта схемы

"$id"

Используется для указания уникального идентификатора документа или его подсхем.

"title" "description" "examples" "comment"

Комментарии к JSON схеме

"Keywords" зависимые от типа данных

Тип данных: "type": "string"

Keywords
Описание
Пример JSON Shema
Примеры JSON сообщения

minLength maxLength

Длину строки string можно ограничить с помощью ключевых слов minLength и maxLength. Для обоих ключевых слов значение должно быть неотрицательным числом.

pattern

Формат строки string можно ограничивать с помощью ключевого слова pattern. Паттерн задается с помощью регулярного выражения RegEx

Тип данных: "type": "number"

Keywords
Описание
Пример JSON Shema
Примеры JSON сообщения

minimum maximum exclusiveMinimum exclusiveMaximum

Диапазон числа number можно ограничивать с помощью ключевых слов.

Если x - это проверяемое значение, то должно выполняться следующее:

  • x ≥ minimum

  • x > exclusiveMinimum

  • x ≤ maximum

  • x < exclusiveMaximum

multipleOf

Кратность числа number можно ограничивать с помощью multipleOf

Тип данных: "type": "object"

Keywords
Описание
Пример JSON Shema
Примеры JSON сообщения

properties

Тип данных объектов object можно ограничивать с помощью properties в котором прописаны ограничения для каждого объекта

patternProperties

Тип данных объектов object можно ограничивать с помощью шаблонов свойств

additionalProperties

Используется для управления обработкой дополнительных элементов, не входящих ни в properties, ни в patternProperties

required

Ограничение на обязательные объекты object

propertyNames

Формат элементов объекта object можно ограничивать с помощью ключевого слова propertyNames. Паттерн задается с помощью регулярного выражения RegEx

minProperties maxProperties

Количество свойств объекта можно ограничить с помощью ключевых слов

Тип данных: "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)

Да

Значение атрибута

Большой развернутый пример

Источники:

Last updated

Was this helpful?