我想验证一个JSON结构,其中必须存在userId
密钥或appUserId
密钥(恰好是其中之一-不能同时存在)。
例如,
{ "userId": "X" }
{ "appUserId": "Y" }
有效,但是:
{ "userId": "X", "appUserId": "Y"}
{ }
不是。
如何使用JSON模式验证此条件?我已经尝试过
oneOf
关键字,但是它适用于值,而不是键。 最佳答案
这对我有用:
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