JSON перечисление схемы не влияет на валидацию - PullRequest
1 голос
/ 19 марта 2020

У меня есть подсхема, определенная во вложенных объектах, и я не могу заставить работать ограничение enum. См. Здесь ....

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
        "Top level": {
            "type": "object",
            "properties": {
                "State": {
                    "type": "object",
                    "description": "stuff",
                    "properties": {
                        "Value": {
                            "type": "string",
                            "enum:": [
                                "A",
                                "B",
                                "C"
                            ]
                        },
                        "readOnly": true
                    },
                    "required": [
                        "Value"
                    ]
                }
            },
            "required": [
                "State"
            ]
        }
    },
    "required": [
        "Top level"
    ]
}

Это должно завершиться ошибкой, но вместо этого оно проверяется. Ниже ...

{
    "Top level": {
        "State": {
            "Value": "not supposed to validate but does anyway"
        }
    }
}

Как ни странно, эта схема работает и блокирует нежелательные строки, но у нее нет более глубокой структуры подсхемы ...

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "properties": {
        "Value": {
            "type": "string",
            "enum": [
                "A",
                "B",
                "C"
            ]
        }
    }
}

, и это пример правильно отклоняется ...

{
    "Value": "D"
}

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

Любая помощь будет оценена!

1 Ответ

2 голосов
/ 19 марта 2020

Это было действительно трудно определить по какой-то причине. Я думал, что я тоже схожу с ума. У вас есть дополнительные : там.

"enum:": [
     ^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...