jSonschema,用自定义函数验证对象键

问题描述 投票:0回答:1

"Description": { "en": "English Description", "sv": "Swedish Description", "fr": "French Description" }, 我在文档中阅读了我可以使用'格式'属性来使用函数检查自定义格式。因此,我编写了一种将字符串作为参数的方法,如果它是RFC1766语言字符串。 @_checks_drafts('rfc1766lang') def rfc1766lang(instance): """some logic, return True if rfc1766"""

我找不到有关如何将其应用于对象键进行验证的任何示例,而不是值。
这是可能的吗?
我尝试了以下类似的事情,但我无法成功

rfc1766_string_schema_v2 = { 'type': 'object', 'format': 'rfc1766lang', 'additionalProperties': False }

我知道,如果我的JSON字符串如下,那将容易得多。但是,这不是现在的选择。
"Description": [{
    "lan": "en",
    "text": "Description in English"
}, {
    "lan": "sv",
    "name": "Description in Swedish"
}]

这个是一个非常好的和相关的问题,因为这实际上是V5

的Proped语法的一部分,因此官方的Meta-Schema也必须处理此问题。

json模式无法为对象键指定“格式”。 JSON模式支持对象键的唯一“验证”是

patternProperties
,它提供正则表达式。

对于语言代码,您能做的最好的可能就是:

{ "type": "object", "patternProperties": { "^[a-zA-Z]+(-[a-zA-Z]+)*$": {...} }, "additionalProperties": false }
将限制数据,以便仅允许属性与该模式匹配 - 但这不是您要寻找的完整验证,恐怕。
    
python jsonschema
1个回答
6
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.