JSON 架构枚举不影响验证

JSON Schema enum does not affect validation

我在嵌套对象中定义了一个子模式,但无法使枚举约束起作用。看这里....

{
    "$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"
}

我做错了什么?它一定是关于嵌套的一些基本知识 objects.I 知道如果我更改值名称,它会检测到它丢失并在第一个示例的验证期间拒绝...为什么它不检测无效的枚举字符串?

如有任何帮助,我们将不胜感激!

由于某种原因,这真的很难发现。我以为我也疯了。你那里有一个额外的 :

"enum:": [
     ^