2014-10-23 14 views
7

Ho uno schema JSON che descrive una sintassi di query API piuttosto complessa. Alcune delle proprietà sono associate al modello, ma devono anche accettare altri valori (ad esempio altre stringhe esplicite) diversi dal modello. Non riesco a trovare da nessuna parte nella moltitudine di siti di schemi JSON qualsiasi esempio di questo.jsonschema più valori per la proprietà stringa

Un esempio:

{ 
    "type": "object", 
    "properties": { 
     "$gte": { 
      "type": "string", 
      "pattern": "<some-pattern>" 
     } 
    } 
} 

Quello che mi piacerebbe essere in grado di fare l'esempio di cui sopra è precisano che $gte può essere uno qualsiasi di un certo insieme di valori vincolati. Ad esempio, questa specifica implementazione richiede che i valori "$ gte" s 'essere costretti a una delle seguenti opzioni:

  1. un formato di data specifica
  2. Un token {token} che viene sostituito con un valore speciale sul server- lato

ho visto la proprietà oneOf utilizzato in questa situazione, ma solo con la proprietà format così sto supponendo che questo è possibile, semplicemente non è sicuro della sintassi delle modalità di attuazione, ad esempio, si potrebbe essere qualcosa del genere:

Qualsiasi chiarezza su come ottenere questo risultato sarebbe molto apprezzata in quanto non ho molta fortuna con la specifica Draft 4 per lo schema JSON o per trovare qualche esempio.

risposta

13

Se si desidera che i dati per essere uno di un insieme fisso di valori esatti, è possibile utilizzare enum:

{ 
    "type": "string", 
    "enum": ["stop", "go"] 
} 

Quindi, per adattare questo nel tuo esempio, provate:

{ 
    "type": "object", 
    "properties": { 
     "$gte": { 
      "type": "string", 
      "oneOf": [ 
       {"pattern": "<some-pattern>"}, 
       {"enum": ["TOKEN", "ANOTHER_TOKEN"]} 
      ] 
     } 
    } 
} 
Problemi correlati