JSON模式必填字段,取决于其他字段的值

时间:2019-09-30 13:37:46

标签: json validation schema

是否可以根据JSON模式中的其他字段值将字段设置为必填字段?

JSON模式包含 mode 字段。如果等于' release '或' debug ',则不需要 file_path 。如果它等于' custom ',则为必需。

"mode": {
    "enum": [
        "debug",
        "release",
        "custom"
    ],
    "id": "mode",
    "required": true,
    "type": "string"
},
"file_path": {
    "id": "file_path",
    "required": false,
    "type": "string"
}

1 个答案:

答案 0 :(得分:0)

有一个针对JSON Schema草案7的解决方案:

{
    "build": {
        "type": "object",
        "id": "build",

        "oneOf": [
            {
                "$ref": "#/definitions/ReleaseDebug"
            },
            {
                "$ref": "#/definitions/Custom"
            }
        ]
    }
},
"definitions": {
    "ReleaseDebug": {
        "required": ["mode"],
        "properties": {
            "mode": {
                "type": "string",
                "enum": [
                    "debug",
                    "release"
                ],
                "id": "mode"
            }
        }
    },
    "Custom": {
        "required": ["mode", "file_path"],
        "properties": {
            "mode": {
                "type": "string",
                "enum": [
                    "custom"
                ],
                "id": "mode"
            },
            "file_path": {
                "type": "string",
                "id": "file_path"
            },
        }
    }
}