2017-05-31 5 views
1

Ich erstelle gerade ein JSON-Schema für einige Daten. Lassen Sie uns sagen, dass mein Schema dieser Form ist:JSON Schema alle möglichen Kombinationen von enum

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

Meine Frage ist, ist es möglich, festzulegen, dass wir alle möglichen Kombinationen der property1 und property2 Werte (in beliebiger Reihenfolge ohne Wiederholungen) wollen? Der Wert von val wird fast sicher nicht einzigartig sein.

Alles, was ich dabei tun kann, ist "minItems": 4, "maxItems": 4, in das Schema über dem "items" Objekt hinzuzufügen, aber das bedeutet nur, dass wir am Ende mit genau 4 Elementen enden werden, und garantiert nicht, dass sie eindeutig sein werden.

Ich fordere niemanden auf, das ganze Schema für mich zu schreiben, nur nach Hinweisen auf Dokumentation oder einfachen Beispielen suchend, um mich in die richtige Richtung zu bringen.


Testfälle (eingeschlossen zu meinem Punkt zu klären)

Dies als einer der Kombinationen ausfallen sollte fehlt

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

Dies sollte der Kombinationen ausfallen als man ist wiederholt

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

sollte dieser Pass

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

auch

{"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

Haben Sie es versucht? Dies ist kein Code-Writing-Service –

+0

@DarrenSweeney Ich bin neu in JSON Schemas, also habe ich an all den Orten gesucht, an die ich denken konnte, und habe nichts Nützliches gefunden. Diese Website ist normalerweise sehr gut darin, mich in die richtige Richtung zu lenken, wenn ich feststecke, und soweit ich finden konnte, hatte niemand sonst eine solche Frage gestellt. Alles, was mir dabei in den Sinn kommt, ist einschränkend, also muss es genau 4 Elemente im Array geben, aber das garantiert nicht, dass sie alle einzigartig sind. – lioness99a

Antwort

0

Enum Werte Objekte sein können, können Sie es auf Objektebene passieren Dies sollte verwenden können.

+0

Kannst du das bitte etwas erweitern? Ich verstehe nicht, was du meinst – lioness99a

0

Ich bin ziemlich sicher, dass es getan werden kann, aber die Lösung wäre so komplex und unlesbar, dass es sich nicht lohnen würde. Ich kann nicht sicher in Ihrem Fall wissen, aber in der Regel zeigen Situationen wie diese eine schlechte Wahl in, wie Sie Ihre Datenstruktur entworfen haben. Ich würde prüfen, wie Sie Ihre Daten umstrukturieren könnten.

Verwandte Themen