【问题标题】:How can I validate with JSON scheme if object is empty or have required properties?如果对象为空或具有必需的属性,如何使用 JSON 方案进行验证?
【发布时间】:2019-07-14 15:50:59
【问题描述】:

我想用函数中的模式验证 JSON 对象数组。这些对象必须具有以下格式之一:

  • 空对象
  • 具有四个属性的对象

我尝试在oneOf 中包装所需的属性,但出现以下错误:Invalid input: data[1].prop should match exactly one schema in oneOf

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "prop": {
                "type": "object",
                "properties": {
                    "name": {
                        "prop1": "string"
                    },
                    "type": {
                        "prop2": "string"
                    },
                    "amount": {
                        "prop3": "number"
                    },
                    "operation": {
                        "prop4": "string"
                    }
                },
                "oneOf": [
                    { "required": ["prop1", "prop2", "prop3", "prop4"] },
                    { "required": [] }
                ]
            }
        }
    }
}

【问题讨论】:

    标签: json validation jsonschema required


    【解决方案1】:

    我会将oneOf 移出,使其位于items 关键字下方。

    在其中一个子模式中,您拥有properties 关键字以及这些属性的required 关键字加上一个additionalProperties: false。这部分将满足“恰好四个属性”的条件。

    在另一个子模式中,只需确定它需要是一个对象,但不要声明任何属性。在这个中也使用additionalProperties: false。这满足“空对象”条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 2022-08-18
      • 2013-08-14
      • 2016-11-07
      • 2020-02-05
      相关资源
      最近更新 更多