繁体   English   中英

JSON 架构“oneOf”每个?

[英]JSON Schema “oneOf” each?

是否可以制作一个 JSON 模式来验证一个数组是否包含至少 1 个三个非重叠类型的实例。 一个简单的例子是一个任意长度的数字数组,其中至少包含一个 1、一个 2 和一个 3。

我不能使用allOf因为这将验证数组中的每个数字都是 1、2 和 3 - 没有数字可以是

我不能使用anyOf因为那样我就可以拥有一个只有一个元素的数组

我不能使用oneOf因为,我可以再一次拥有一个带有一个数字的数组

(......我也不清楚我应该使用contains键还是在items键中)

我正在寻找的是一种表达这些项目“每个”的方式。 JSON 架构是否可行?


这是一个带有oneOf的损坏示例

{
    "type": "object",
    "properties": {
        "numbers": {
            "type": "array",
            "contains": {
                "oneOf": [
                    {
                        "const": 1
                    },
                    {
                        "const": 2
                    },
                    {
                        "const": 3
                    }
                ]
            },
            "items": {
                "type": "number"
            }
        }
    }
}

[1] – 不应验证

[1,2] - 不应该验证

[1,2,3] - 应该验证

[1,2,3,4] - 应该验证

您可以将contains放在allOf

{
    "type": "object",
    "properties": {
        "numbers": {
            "type": "array",
            "allOf": [
                {
                    "contains": {
                        "const": 1
                    }
                },
                {
                    "contains": {
                        "const": 2
                    }
                },
                {
                    "contains": {
                        "const": 3
                    }
                }
            ]
        }
    }
}``

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM