jsonschema dependentSchema 未验证
jsonschema dependentSchema not validating
我正在尝试学习 json 架构,但有些事情不适合我。
我正在尝试 运行 来自 http://json-schema.org/understanding-json-schema/reference/conditionals.html#id4 的示例用于 dependentSchemas,但它无法验证。
我正在使用这个架构:
check_schema = {"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string" },
"credit_card": { "type": "number" }
},
"required": ["name"],
"dependentSchemas": {
"credit_card": {
"properties": {
"billing_address": { "type": "string" }
},
"required": ["billing_address"]
}
}
}
和这个 json,应该引发错误,因为它缺少密钥 billing_address
:
check_dict={
"name": "John Doe",
"credit_card": 5555555555555555
}
但是当我使用 jsonschema.validate(dic_check, schema_check)
(使用 python、jsonschema 包版本 4.2.1 时),验证顺利通过。
我做错了什么?
如果您使用的实现至少不支持规范的 draft2019-09,dependentSchemas
将不会被识别为关键字。在早期版本(draft7 及之前)中,该关键字被称为 dependencies
,具有相同的语法(实际上,dependencies
分为两个,dependentSchemas
和 dependentRequired
)。
详细信息在您链接的页面上有描述,https://json-schema.org/understanding-json-schema/reference/conditionals.html#dependentschemas。
如果您仍然认为您所拥有的应该有效,我建议您在实施的问题队列中打开错误报告。
我正在尝试学习 json 架构,但有些事情不适合我。 我正在尝试 运行 来自 http://json-schema.org/understanding-json-schema/reference/conditionals.html#id4 的示例用于 dependentSchemas,但它无法验证。
我正在使用这个架构:
check_schema = {"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string" },
"credit_card": { "type": "number" }
},
"required": ["name"],
"dependentSchemas": {
"credit_card": {
"properties": {
"billing_address": { "type": "string" }
},
"required": ["billing_address"]
}
}
}
和这个 json,应该引发错误,因为它缺少密钥 billing_address
:
check_dict={
"name": "John Doe",
"credit_card": 5555555555555555
}
但是当我使用 jsonschema.validate(dic_check, schema_check)
(使用 python、jsonschema 包版本 4.2.1 时),验证顺利通过。
我做错了什么?
如果您使用的实现至少不支持规范的 draft2019-09,dependentSchemas
将不会被识别为关键字。在早期版本(draft7 及之前)中,该关键字被称为 dependencies
,具有相同的语法(实际上,dependencies
分为两个,dependentSchemas
和 dependentRequired
)。
详细信息在您链接的页面上有描述,https://json-schema.org/understanding-json-schema/reference/conditionals.html#dependentschemas。
如果您仍然认为您所拥有的应该有效,我建议您在实施的问题队列中打开错误报告。