JSON模式 - 如何指定所需属性的排列

时间:2015-03-31 20:02:01

标签: json schema jsonschema

以下是我的JSON架构的摘录。

我想指定algorithmresults都是必需的。

另外我想指定:

  • algorithmalgorithm1时,结果必须是results1results2results3之一。
  • algorithmalgorithm2时,结果必须是results2results3results4之一。

这可能吗?

        "algorithm": {
            "description": "description...",
            "type": "string",
            "enum": [
                "",
                "algorithm1",
                "algorithm2"
            ]
        },
        "results": {
            "description": "description...",
            "type": "string",
            "enum": [
                "",
                "results1",
                "results2",
                "results3",
                "results4"
            ]
        },
     "required": ["algorithm", "results"]

1 个答案:

答案 0 :(得分:1)

感谢@jruizaranguren的上述参考,我能够弄明白。

"required": ["results"],
"results": {
    "type": "object",
    "oneOf": [
        { "$ref": "#/definitions/Results1" },
        { "$ref": "#/definitions/Results2" }
    ]
},
"definitions": {
    "Results1": {
        "type": "object",
        "required": ["algorithm", "results"],
        "properties": {
            "algorithm": {
                "type": "string",
                "enum": [ "algorithm1" ]
            },
            "results": {
                "type": "string",
                "allOf": [
                    { "result": "results1" },
                    { "result": "results2" },
                    { "result": "results3" }
                ]
            }
        }
    },
    "Results2": {
        "type": "object",
        "required": ["algorithm", "results"],
        "properties": {
            "algorithm": {
                "type": "string",
                "enum": [ "algorithm2" ]
            },
            "results": {
                "type": "string",
                "allOf": [
                    { "result": "results2" },
                    { "result": "results3" },
                    { "result": "results4" }
                ]
            }
        }
    }