JSON Schema:验证是否存在一个属性

时间:2014-09-09 10:47:29

标签: python json jsonschema

我想验证一个JSON结构,其中userId键或appUserId键必须存在(恰好其中一个 - 而不是两者)。

例如,

{ "userId": "X" }
{ "appUserId": "Y" }

有效,但是:

{ "userId": "X", "appUserId": "Y"}
{ }

不是。

如何使用JSON架构验证此条件?我尝试过oneOf关键字,但它适用于值,而非键。

1 个答案:

答案 0 :(得分:2)

这对我有用:

from jsonschema import validate

schema = {
    "type" : "object",
    "properties" : {
        "userId": {"type" : "number"},
        "appUserId": {"type" : "number"},
    },
    "oneOf": [
        {
             "type": "object",
             "required": ["userId"],
        },
        {
             "type": "object",
             "required": ["appUserId"],
        }
    ],
}


validate({'userId': 1}, schema) # Ok
validate({'appUserId': 1}, schema) # Ok
validate({'userId': 1, 'appUserId': 1}, schema) # ValidationError