JSON 架构:属性 值必须等于父键

JSON schema: Property value must be equal to parent key

根据 JSON-Schema 7.0 String section,我可以使用 "relative-json-pointer" 来确保 属性 值与父键完全匹配。

Relative JSON Pointers的例子部分(5.1)中,表示“往上一层”获取键值,是"0#".

给定以下 JSON 文档:

{
    "valid": {
        "name": "valid"
    },
    "invalid": {
        "name": "invalid, because this value is not the same value as the parent key"
    }
}

以下 json-schema 应该捕获 "invalid" 对象:

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "type": "object",
    "additionalProperties": {
        "type": "object",
        "required": ["name"],
        "properties": {
            "name": {
                "type": "string",
                "json-pointer": "0#"
            }
        }
    }
}

我确信 json-schema 是正确的,因为它会捕获以下 JSON 文档中的两个对象 "invalid2""invalid3"

{
    "valid": {
        "name": "valid"
    },
    "invalid": {
        "name": "invalid, because this value is not the same value as the parent key"
    },
    "invalid2": {   },
    "invalid3": { "name": 2 }
}

我已经用 ajv-cli 3.3.0 and python jsonschema 3.2.0 来测试了。但是验证实现都不会捕获 "invalid" 对象。两种实现都声称完全支持 JSON Schema draft 7.

I can use a "relative-json-pointer" to make sure that a property value is an exact match of a parent key.

我不确定您是如何阅读该部分的,但这根本不是它所说的。

您在文档站点上引用的部分列出了 format 关键字的一组 built-in 可能值。

它不会对您要验证的值执行任何操作,例如 relative-json-pointer

你想做什么?