首页 > 解决方案 > 如果可选属性无效,JSON Schema 会抛出验证错误

问题描述

我有一个如下所示的 json 模式,它具有三个可选的属性高度、重量和体积。但我想在这里做以下额外检查:

  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"
                  }
               }
             }
            }
          }

标签: pythonjsonvalidationjsonschemapython-jsonschema

解决方案


你要找的是additionalProperties关键。来自JsonSchema 文档

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 版就在这里。


推荐阅读