【发布时间】:2021-02-19 06:46:06
【问题描述】:
根据JSON-Schema 7.0 String section,我可以使用"relative-json-pointer" 来确保属性值与父键完全匹配。
在Relative JSON Pointers的examples section (5.1)中,显示“上一层”得到key值,是"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 模式是正确的,因为它会在以下 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。
【问题讨论】:
标签: json jsonschema ajv python-jsonschema