JSON проверка правильности схемы, если идентификатор существует - PullRequest
0 голосов
/ 03 марта 2020

Я указал схему для каталога товаров. Он должен содержать список категорий товаров и список товаров. Каждый товар должен иметь товарную категорию. Я попытался указать отношение с помощью ключевого слова 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"
        }
    ]    
}
...