JSON Schema обязательное поле в зависимости от другого значения поля - PullRequest
0 голосов
/ 30 сентября 2019

Можно ли сделать поле обязательным / необязательным в зависимости от другого значения поля в схеме 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 голосов
/ 03 октября 2019

Существует решение для JSON Schema draft 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"
            },
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...