JSON模式 - 可以从一个对象引用多个模式吗?

时间:2015-04-21 19:07:55

标签: json schema jsonschema

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

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "images": {
            "type": "array",
            "items": { "$ref": "#/definitions/bits" },
        }
    },
    "definitions": {
        "identifier": {
            "type": "string"
        },
        "bits": {
            "type": "integer",
            "enum": [
                8,
                16,
                32
            ]
        }
    }
}

如上所述,我相信一个图像数组,其中每个元素由一个字符串标识符和一个值为8,16或32的整数组成,将被视为有效的JSON数据。

这适用于我的一些JSON数据。

但是如果我想进一步约束模式使得整数值只能是32呢?在允许某些JSON数据对原始模式有效的情况下,我该怎么做?

例如,是否可以在一个对象中引用两个模式,例如。类似的东西:

items": { "$ref": "#/definitions/bits" AND "$ref": "#/definitions/otherSchema"}

1 个答案:

答案 0 :(得分:2)

您可以使用allOf来验证多个架构。

{
    "items": {
        "allOf": [
            { "$ref": "#/definitions/bits" },
            { "$ref": "#/definitions/otherSchema" }
        ]
    }
}