/ / JSON схема всички възможни комбинации от enum - json, jsonschema

JSON Схема на всички възможни комбинации от enum - json, jsonschema

В момента изготвям схема на JSON за някои данни. Нека да кажем, че моята схема е в тази форма:

{
"$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"]
}
}

Въпросът ми е, възможно ли е да се уточни, че искаме всички възможни комбинации на property1 и property2 стойности (във всеки ред без повторения)? Стойността на 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
}
]}

Отговори:

0 за отговор № 1

Стойностите на Enum могат да бъдат обекти, можете да ги използвате на ниво обект.


0 за отговор № 2

Почти съм сигурен, че може да се направи, но решениетоби било толкова сложно и нечетливо, че няма да си струва да се направи. Не мога да знам със сигурност във вашия случай, но обикновено ситуации като тази показват лош избор в начина, по който сте проектирали вашата структура на данни. Бих разгледал как можете да преструктурирате данните си.