2017-05-31 43 views
1

我目前正在爲一些數據起草JSON模式。比方說,我的模式是這樣的形式:JSON Schema所有可能的枚舉組合

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "Title", 
    "type": "array", 
    "items": { 
     "type":"object", 
     "properties":{ 
       "property1": { 
        "type": "string", 
        "enum": ["ALPHA", "BETA"] 
       }, 
       "property2": { 
        "type": "string", 
        "enum": ["alpha", "beta"] 
       }, 
       "val": { 
        "type": "number", 
        "min": 0, 
        "max": 100 
       } 
      }, 
     "required": ["property1", "property2", "val"] 
    } 
} 

我的問題是,是否有可能指定我們希望property1property2值的所有可能的組合(在沒有重複任何順序)? val的值幾乎肯定不會是唯一的。

我所能想到的只是將"minItems": 4, "maxItems": 4,添加到"items"對象上方的模式中,但這隻意味着我們最終只能得到4個項目,並不能保證它們是唯一的。

我並不是要求任何人爲我編寫整個模式,只是尋找指向文檔的指針,或簡單的例子來推動我朝着正確的方向前進。


包括闡明我的觀點

這應該作爲組合中的一個失敗測試用例缺少

{"data":[ 
    { 
    "property1": "ALPHA", 
    "property2": "alpha", 
    "val": 7 
    },{ 
    "property1": "ALPHA", 
    "property2": "beta" 
    "val": 16 
    },{ 
    "property1": "BETA", 
    "property2": "alpha" 
    "val": 12 
    } 
]} 

將失敗,因爲組合之一是重複

{"data":[ 
    { 
    "property1": "ALPHA", 
    "property2": "alpha" 
    "val": 73 
    },{ 
    "property1": "ALPHA", 
    "property2": "beta" 
    "val": 72 
    },{ 
    "property1": "BETA", 
    "property2": "alpha" 
    "val": 73 
    },{ 
    "property1": "BETA", 
    "property2": "beta" 
    "val": 71 
    },{ 
    "property1": "ALPHA", 
    "property2": "beta" 
    "val": 68 
    } 
]} 

這應該通過

{"data":[ 
    { 
    "property1": "ALPHA", 
    "property2": "alpha" 
    "val": 26 
    },{ 
    "property1": "ALPHA", 
    "property2": "beta" 
    "val": 26 
    },{ 
    "property1": "BETA", 
    "property2": "alpha" 
    "val": 32 
    },{ 
    "property1": "BETA", 
    "property2": "beta" 
    "val": 83 
    } 
]} 

這也應該通過

{"data":[ 
    { 
    "property1": "ALPHA", 
    "property2": "beta" 
    "val": 15 
    },{ 
    "property1": "BETA", 
    "property2": "alpha" 
    "val": 6 
    },{ 
    "property1": "ALPHA", 
    "property2": "alpha" 
    "val": 65 
    },{ 
    "property1": "BETA", 
    "property2": "beta" 
    "val": 37 
    } 
]} 
+1

你試過了嗎?這不是一個代碼編寫服務 –

+0

@DarrenSweeney我是JSON Schemas的新手,所以我查看了所有我能想到的地方,並且沒有發現任何有用的東西。當我被困時,這個網站通常非常善於指引我正確的方向,並且據我所知,沒有人問過這樣的問題。我能想到的所有限制都是這樣的,因此陣列中必須有4個項目,但這並不能保證它們都是唯一的。 – lioness99a

回答

0

枚舉值可以是對象,你可以用它在對象級別。

+0

您可以擴展一下嗎?我不明白你的意思 – lioness99a

0

我很確定它可以完成,但解決方案會非常複雜和不可讀,以至於不值得去做。我無法確切地知道你的情況,但通常這種情況表明在你設計數據結構的方式上選擇不當。我會研究如何重組您的數據。