JSON Schema: описание, примеры и инструменты
JSON Schema – это язык описания схемы для валидации и проверки данных в формате JSON.
Он позволяет определить правила и ограничения для структуры и значений полей объекта JSON. JSON Schema является мощным инструментом для обеспечения корректности данных и улучшения коммуникации между системами.
Начнем с основных понятий, которые необходимо понимать при работе с JSON Schema.
-
Объект JSON Schema:
Корневой элемент, содержащий всю схему. Объект JSON Schema может содержать множество свойств, каждое из которых определяет правила для соответствующих полей в JSON.
{ "type": "object", "properties": { "name": { "type": "string" }, "age": { "type": "number" }, "email": { "type": "string", "format": "email" } }, "required": ["name"] } -
Свойство "type":
Определяет тип значения, которое ожидается для соответствующего поля в JSON. Возможные типы включают "string", "number", "boolean", "object", "array" и другие.
-
Свойство "properties":
Определяет набор допустимых полей и их свойств.
-
Свойство "required":
Определяет список обязательных полей в JSON.
-
Свойство "format":
Определяет специальный формат, такой как адрес электронной почты или дата.
-
Ограничения:
JSON Schema позволяет определять ограничения на значения полей, такие как минимальное/максимальное значение, длина строки и другие.
{ "type": "number", "minimum": 1, "maximum": 100 } -
Проверка массивов:
JSON Schema позволяет определять структуру и ограничения элементов в массиве.
{ "type": "array", "items": { "type": "string" }, "minItems": 1, "maxItems": 5 } -
Референсы:
JSON Schema поддерживает использование ссылок для повторного использования существующих схем.
{ "type": "object", "properties": { "name": { "$ref": "#/definitions/nameField" } }, "definitions": { "nameField": { "type": "string", "pattern": "^[A-Za-z]+$" } } }
Теперь, когда мы рассмотрели основные понятия JSON Schema, давайте рассмотрим примеры кода для валидации и проверки JSON данных с использованием JSON Schema:
1. Валидация JSON данных с помощью библиотеки JSON Schema для Python:
import json
from jsonschema import validate
data = {
"name": "John Doe",
"age": 25,
"email": "johndoe@example.com"
}
schema = {
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "number" },
"email": { "type": "string", "format": "email" }
},
"required": ["name"]
}
try:
validate(data, schema)
print("JSON данные валидны.")
except:
print("JSON данные невалидны.")
2. Валидация JSON данных с использованием JSON Schema для JavaScript:
var data = {
"name": "John Doe",
"age": 25,
"email": "johndoe@example.com"
};
var schema = {
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "number" },
"email": { "type": "string", "format": "email" }
},
"required": ["name"]
};
var Ajv = require('ajv');
var ajv = new Ajv();
var validate = ajv.compile(schema);
var valid = validate(data);
if (valid) {
console.log("JSON данные валидны.");
} else {
console.log("JSON данные невалидны.");
}
JSON Schema является мощным инструментом для обеспечения корректности и структуры данных в формате JSON. Это лишь краткое введение в синтаксис и примеры использования. Он может быть использован на разных платформах и языках программирования для обеспечения согласованности и совместимости данных между различными системами. Если вам необходимо проводить валидацию и проверку данных с использованием JSON, вызывайте JSON Schema.