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

2024-10-02 18:27:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python-jsonschema进行json验证。我有一个对象,其本地化文本在rfc1766语言代码键中指定如下:

"Description": {
    "en": "English Description",
    "sv": "Swedish Description",
    "fr": "French Description"
},

I've read in the documentation我可以使用“format”属性使用函数检查自定义格式。因此,我编写了一个方法,它将字符串作为参数,如果它是RFC1766语言字符串,则返回True。在

^{pr2}$

但是,我找不到任何关于如何将此应用于对象键(而不是值)的验证的示例。在

这可能吗?在

我试过下面这样的方法,但没有成功

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

我知道如果我有下面的json字符串,这会容易得多。不过,目前还不是一个选择。在

"Description": [{
    "lan": "en",
    "text": "Description in English"
}, {
    "lan": "sv",
    "name": "Description in Swedish"
}]

Tags: 对象方法字符串in语言jsonformatenglish
1条回答
网友
1楼 · 发布于 2024-10-02 18:27:06

这是一个非常好且相关的问题,因为这实际上是proposed syntax for v5的一部分,所以官方的元模式也必须处理这个问题。在

JSON架构无法为对象键指定“格式”。JSON模式对对象键唯一支持的“validation”是patternProperties,它提供了一个正则表达式。在

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

{
    "type": "object",
    "patternProperties": {
        "^[a-zA-Z]+(-[a-zA-Z]+)*$": {...}
    },
    "additionalProperties": false
}

这将限制数据,使其只允许属性与该模式匹配-但恐怕这不是您要寻找的完整验证。在

相关问题 更多 >