如果可选属性无效,则JSON Schema引发验证错误

时间:2019-11-26 07:03:26

标签: python json validation jsonschema python-jsonschema

我有一个json模式,如下所示,它具有三个属性height,weight和volume,它们是可选的。但我想在这里进行以下其他检查:

  1. 如果传递了除高度,重量和体积以外的其他任何属性,则应引发错误

由于这些是可选属性,因此不确定如何实现。

  {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "type": "object",
            "properties": {
              "options": {
                "type": "object",
                "properties": {
                  "height": {
                    "type": "number"
                  },
                  "weight": {
                    "type": "number"
                  },
                  "volume": {
                    "type": "number"
                  }
               }
             }
            }
          }

1 个答案:

答案 0 :(得分:2)

您要寻找的是additionalProperties键。来自JsonSchema docs

  

additionalProperties关键字用于控制对其他内容的处理,即,名称未在properties关键字中列出的属性。默认情况下,允许任何其他属性。

所以,这个朋友变成了:

 {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "type": "object",
            "properties": {
              "options": {
                "type": "object",
                "properties": {
                  "height": {
                    "type": "number"
                  },
                  "weight": {
                    "type": "number"
                  },
                  "volume": {
                    "type": "number"
                  }
               },
               "additionalProperties": false
             }
            }
          }

据我了解,自draft 00开始支持此功能,因此draft 4可以接受,但您知道,第8版在这里。