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
。
你想做什么?
根据 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
。
你想做什么?