2014-11-23 3 views
6

Я пытаюсь реализовать это условие: поле требуется на основе значения другого поля, т. Е. Если запрос с «индексом»: «истина» существует, тогда «id» требуется элемент: true.Условие JSON условно: поле требуется на основе значения другого поля

Вот пример схемы:

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

Как это можно реализовать?

Любые указатели будут полезны.

+0

Возможный дубликат [Как использовать зависимости в схеме JSON (черновик-04)] (http://stackoverflow.com/questions/18375506/how-to-use-dependencies-in-json-schema-draft-04) – jruizaranguren

+0

Возможный дубликат [JSON Schema - указать поле необходимо на основе значения другого поля] (http://stackoverflow.com/questions/9029524/json-schema-specify-field-is-required-based-on-value -of-другое-поле) – buff

ответ

7

Ваш образец Чема странно для меня, но для случая проверки в описании билета ваш может использовать эту часть JSon Шма:

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

Этот прием помогает вам, если вы хотите проверить один параметр, когда другие параметры равны некоторому значению.

Смежные вопросы