【问题标题】:JSON Schema: Validate that exactly one property is presentJSON Schema:验证是否存在一个属性
【发布时间】:2014-09-09 10:47:29
【问题描述】:

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

例如,

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

有效,但是:

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

不是。

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

【问题讨论】:

    标签: python json jsonschema


    【解决方案1】:

    这对我有用:

    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
    

    【讨论】:

    • 如何处理类似的情况,我们有超过 2 个属性,我们需要从中选择任何 1 个示例:从 4 种类型中选择任何一种。
    • 如何验证,只有一键。 {'userId':1,'userId:2'} 应该是无效的,因为它最多只能有一个 userId
    猜你喜欢
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 2021-04-18
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 2020-07-15
    相关资源
    最近更新 更多