Я указал схему для каталога товаров. Он должен содержать список категорий товаров и список товаров. Каждый товар должен иметь товарную категорию. Я попытался указать отношение с помощью ключевого слова ref и нацеливаясь на связанное свойство.
Но когда я проверяю документ JSON, он имеет не указанную категорию продукта, Я не получаю ошибку проверки.
Я видел следующее подсказка на json -schema.org:
Любой «инструмент проверки» »Для достаточно сложного формата данных, следовательно, вероятно, будет иметь две фазы проверки: один на уровне схемы (или структуры), а другой на уровне семантики c. Последняя проверка, вероятно, должна быть реализована с использованием более общего языка программирования.
Правильно ли, что мне нужно самостоятельно выполнять проверку semanti c или есть какой-либо способ достичь своей цели с помощью схемы?
JSON Схема
{
"$id": "https://dummy.com/productcatalog.schema.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "A product catalog schema definition.",
"type": "object",
"properties": {
"ProductCategories": {
"type": "array",
"items": { "$ref": "#/definitions/ProductCategory" }
},
"Products": {
"type": "array",
"items": { "$ref": "#/definitions/Product" }
},
"definitions": {
"ProductCategory": {
"type": "object",
"required": [ "Name", "Description" ],
"properties": {
"Name": {
"type": "string",
"description": "The name of the product category."
},
"Description": {
"type": "string",
"description": "Description of the product category."
}
},
"Product": {
"type": "object",
"required": [ "Name", "ProductCategory" ],
"properties": {
"Name": {
"type": "string",
"description": "Name of the product."
},
"ProductCategory": {
"type": "string",
"description": "Related product category.",
"$ref": "#/definitions/ProductCategory/properties/Name"
}
}
}
}
JSON документ
{
"ProductCategories": [
{
"Name": "Category1",
"Description": "Description of category 1"
}
],
"Products": [
{
"Name": "Product1",
"ProductCategory": "Category1"
},
{ // i would expect to get an error during validation, because the category does not exist
"Name": "Product2",
"ProductCategory": "NonExistingCategory"
}
]
}