根据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.0和python jsonschema 3.2.0进行测试。但是两种验证实现都不会捕获该"invalid"
对象。两种实现都声称完全支持 JSON Schema Draft 7。