JSON-схема глубже уникальности объекта - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь войти в определения JSON-схемы и хотел выяснить, как добиться более глубокой уникальности объекта в определении схемы.Пожалуйста, посмотрите на следующее определение примера, в данном случае простой ввод-вывод модуля.

{
    "$schema": "http://json-schema.org/draft-06/schema#",
    "type": "object",
    "required": ["modulIOs"],
    "properties": {
        "modulIOs": {
            "type": "array",
            "uniqueItems": true,
            "items": {
                "allOf": [
                    {
                    "type": "object",
                    "required": ["ioPosition","ioType","ioFunction"],
                    "additionalProperties": false,
                    "properties": {
                        "ioPosition": {
                            "type": "integer"
                        },
                        "ioType": {
                            "type":"string",
                            "enum": ["in","out"]
                        },   
                        "ioFunction": {
                            "type":"string"
                        }
                    }
                }
            ]
        }
        }
    }
}

Когда я проверяю следующее с iE draft-06, я получаю положительную проверку.

{"modulIOs":
    [
          {
            "ioPosition":1,
            "ioType":"in",
            "ioFunction":"240 V AC in"
        },
        {
            "ioPosition":1,
            "ioType":"in",
            "ioFunction":"24 V DC in"
        }
    ]
} 

Я знаю, что проверка прошла успешно, потому что валидатор делает то, для чего он предназначен - он проверяет структуру JSON-объекта, но есть возможность проверить данные значения объекта в более глубоких объектах илимне нужно выполнить проверку в другом месте?

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

В настоящее время это невозможно с JSON Schema (на черновике-7).

Существует проблема, возникающая на официальном github spec-репо: https://github.com/json-schema-org/json-schema-spec/issues/538

Если вы (или кто-либо, кто читает это), действительно хочет этого, пожалуйста, оставьте большой комментарий к первому вопросу.

В настоящее время вряд ли он попадет в следующий черновик, и даже если это произойдет, время для его сбора может быть медленным.

Эту проверку необходимо выполнить после процесса проверки схемы JSON.

0 голосов
/ 01 июня 2018

Вы можете проверить значение данных полей вашего объекта с помощью проверки схемы JSON.Например, если вам нужно проверить, находится ли ioPosition между 0 и 100, вы можете использовать:

"ioPosition": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }

Если вам нужно проверить поле ioFunction , вы можете использоватьрегулярное выражение, такое как:

 "ioFunction": {
            "type": "string",
            "pattern": "^[0-9]+ V [A,D]C"
          }

Взгляните на json-schema-validation .

...