2016-04-25 4 views
3

У меня есть входной JSON, как показано ниже,Условная проверка Json схемы на основе стоимости недвижимости

{ 
    "results": [ 
    { 
     "name": "A", 
     "testA": "testAValue" 
    } 
    ] 
} 

условие, если значение «имя» является «A», то «Теста» должно быть обязательное поле и если значением «name» является «B», тогда «testB» должно быть обязательным.

Это Json схемы Я пытался и ее не работает, как ожидалось,

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "type": "object", 
    "required": [ 
    "results" 
    ], 
    "properties": { 
    "results": { 
     "type": "array", 
     "oneOf": [ 
     { 
      "$ref": "#/definitions/person" 
     }, 
     { 
      "$ref": "#/definitions/company" 
     } 
     ] 
    } 
    }, 
    "definitions": { 
    "person": { 
     "type": "object", 
     "required": [ 
     "name", 
     "testA" 
     ], 
     "properties": { 
     "name": { 
      "type": "string", 
      "enum": [ 
      "A" 
      ] 
     }, 
     "testA": { 
      "type": "string" 
     } 
     } 
    }, 
    "company": { 
     "type": "object", 
     "required": [ 
     "name", 
     "testB" 
     ], 
     "properties": { 
     "name": { 
      "type": "string", 
      "enum": [ 
      "B" 
      ] 
     }, 
     "testB": { 
      "type": "string" 
     } 
     } 
    } 
    } 
} 

Пробовал с «dependecies» в JSON Schema тоже, но не смог найти правильное решение.

Любая помощь/обходной путь с образцом JSON Schema для достижения вышеуказанного варианта использования оценивается.

+0

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

ответ

4

Your're close. Ваш oneOf должен быть в ключевом слове items.

{ 
    "type": "array", 
    "items": { 
     "oneOf": [ 
      { "$ref": "#/definitions/person" }, 
      { "$ref": "#/definitions/company" } 
     ] 
    } 
} 
Смежные вопросы