1

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

Relative JSON Pointers的示例部分(5.1)中,它显示了“上一级”并获取键值, is "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.0python jsonschema 3.2.0进行测试。但是两种验证实现都不会捕获该"invalid"对象。两种实现都声称完全支持 JSON Schema Draft 7。

4

1 回答 1

0

我可以使用“relative-json-pointer”来确保属性值与父键完全匹配。

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

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

它对您要验证的值没有任何作用,例如 a relative-json-pointer

你想做什么?

于 2020-11-06T14:50:24.107 回答