【问题标题】:Json Schema required validationJson Schema 需要验证
【发布时间】:2018-07-19 10:21:51
【问题描述】:

我有我的 json 架构,其中需要所有值。例如:

....
{
"properties" : {
   "minimumDelay" : {
            "type" : "number"
        },
   "length" : {
            "type" : "number"
        },
}, 
"required": {
   "minimumDelay",
   "length"
}

如果我同时输入 minimumDelay 和 length 值,这里的 json 数据将是有效的。

但我的要求是,当我输入任何一个值(如 XOR 大小写)时,json 数据必须是有效的。必须如何修改我的架构才能达到同样的效果?

【问题讨论】:

    标签: jsonschema json-schema-validator


    【解决方案1】:

    在 JSON Schema 中,XOR 运算符是oneOf

    {
      "properties" : {
        "minimumDelay" : {
          "type" : "number"
        },
        "length" : {
          "type" : "number"
        }
      },
      "oneOf": [
        { "required": ["minimumDelay"] },
        { "required": ["length"] }
      ]
    }
    

    【讨论】:

    • 这不只是意味着至少一个是必需的。您需要明确说明,如果提供了一个,则根本不能提供另一个(而您在这里所拥有的是“必须提供其中一个,另一个可以但没有成为)..
    • 这是正确的。 anyOf 表示至少需要一个。 oneOf 表示需要一个。如果多个有效,oneOf 将失败。我看到大多数人在应该使用anyOf 时使用oneOf。我认为这些名字会让人感到困惑。这是oneOf 实际上是正确选择的罕见情况之一。
    • 啊,是的,非常聪明,我没有充分考虑 oneOf 的互斥性!
    猜你喜欢
    • 2021-10-21
    • 2017-07-05
    • 2020-02-05
    • 2021-04-18
    • 2020-06-09
    • 2019-10-18
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多