簡體   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