2014-11-23 20 views
6

Sto cercando di implementare questa condizione: il campo è obbligatorio in base al valore di un altro campo, ad esempio se la richiesta con "index": "true" esiste quindi "id" elemento richiesto: vero.JSON Schema condizionale: il campo è obbligatorio in base al valore di un altro campo

Ecco uno schema di esempio:

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "test title", 
    "type": "object", 
    "properties": { 
    "data": { 
     "type": "array", 
     "items": { 
     "$ref": "#/definitions/Item" 
     }, 
     "minItems": 0 
    } 
    }, 
    "required": [ 
    "data" 
    ], 
    "definitions": { 
    "Item": { 
     "type": "object", 
     "properties": { 
     "id": { 
      "type": [ 
      "integer", 
      "string" 
      ] 
     }, 
     "type": { 
      "type": "string" 
     } 
     } 
    } 
    } 
} 

Come può essere attuata?

Qualsiasi suggerimento sarà utile.

+0

possibile duplicato di [Come utilizzare le dipendenze nello schema JSON (bozza-04)] (http://stackoverflow.com/questions/18375506/how-to-use-dependencies-in-json-schema-draft-04 – jruizaranguren

+0

Possibile duplicato di [Schema JSON: specificare il campo in base al valore di un altro campo] (http://stackoverflow.com/questions/9029524/json-schema-specify-field-is-required-based-on-value -di-another-campo) – buff

risposta

7

tuo Chema campione è strano per me, ma per caso la convalida nella descrizione biglietto tua può utilizzare questa parte della JSON Shema:

"properties": { 
    "data": { 
     "oneOf": [ 
      { 
       "type": "object", 
       "required": [ 
        "index" 
       ], 
       "properties": { 
        "index": { 
         "type": "boolean", 
         "enum": [false] 
        } 
       } 
      }, 
      { 
       "type": "object", 
       "required": [ 
        "index", 
        "id" 
       ], 
       "properties": { 
        "index": { 
         "type": "boolean", 
         "enum": [true] 
        }, 
        "id": { 
         "type": "boolean" 
        } 
       } 
      } 
     ] 
    } 
} 

Questo trucco aiuta per voi, se si vuole validare un parametro, quando gli altri i parametri equivalgono ad un certo valore.

Problemi correlati