AWS-API 网关——jsonschema 子对象应该在父对象存在时进行验证

AWS-API gateway -- jsonschema child object should validate when parent object exists

我需要为以下 JSON 输入创建 Jsonschema。只有当 Vehicle 对象存在时,才需要 Vehicle 下的属性,如(制造商、型号等)。

 {
     "Manufacturer": "",
     "Characteristics": {
         "Starts": "new",
         "vehicle": {
             "Manufacturer": "hello",
             "Model": "hh",
             "Opening": "",
             "Quantity": "",
             "Principle": "",
             "Type": ""
         }
     }
 }

我尝试了以下 JsonSchema,但是当 Vehicle 对象不存在时这会起作用,但是如果我们将 Vehicle 重命名为其他一些例如:Vehicle1 它不会给出错误。请指导我如何解决此问题。

 {
    "$schema": "http://json-schema.org/draft-07/schema",
    "type": "object",
    "properties": {
        "Manufacturer": {
            "type": [
                "string",
                "null"
            ]
        },
        "Characteristics": {
            "type": "object",
            "properties": {
                "Starts": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "Vehicle": {
                    "$ref": "#/definitions/Vehicle"
                }
            },
            "required": [
                "Starts", "Vehcle"
            ]
        }
    },
    "required": [
        "Manufacturer"
    ],
    

    "definitions": {
        "Vehicle": {
            "type": "object",
            "properties": {
                "Manufacturer": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "Model": {
                    "type": [
                        "string",
                        "null"
                    ]
                },

                "Opening": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "PanelQuantity": {
                    "type": [
                        "string",
                        "null"
                    ]
                },

                "Principle": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "Type": {
                    "type": [
                        "string",
                        "null"
                    ]
                }
            },
            "required": ["Manufacturer", "Model", "Opening", "Quantity", "Principle", "Type"]
    }
    }
}

谢谢, 巴斯卡

听起来您想添加 "additionalProperties": false -- 如果存在未在 properties.

下定义的任何其他属性,这将生成错误