2015-03-09 4 views
2

Мне нужно написать схему JSON на основе спецификации, определенной http://json-schema.org/. Но я борюсь за обязательную/обязательную проверку собственности. Ниже приведена схема JSON, которую я написал там, где все 3 свойства являются обязательными, но В моем случае либо один должен быть обязательным. Как это сделать?Проблема с json-схемой по требуемому свойству

{ 
    "id": "http://example.com/searchShops-schema#", 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "searchShops Service", 
    "description": "", 
    "type": "object", 
    "properties": {  
      "city":{ 
       "type": "string"     
      }, 
      "address":{ 
       "type": "string"     
      },  
      "zipCode":{ 
       "type": "integer" 
      }     
    }, 
    "required": ["city", "address", "zipCode"] 
} 
+0

Как JSON нет ничего, кроме дешевой копии XML, просто проверить их спецификации, если у них есть что-то соотносить с '' XSD: choice'' (http://www.w3schools.com/schema/el_choice.asp). – BitTickler

+0

Похоже, что ключевое слово является «одним из», как показано здесь: http://json-schema.org/example2.html. В разделе «Схема входа - добавление ограничений». – BitTickler

+0

Что вы подразумеваете под словом «любой должен быть обязательным»? Вы имеете в виду, что должно присутствовать хотя бы одно свойство? – raneshu

ответ

0

Если ваша цель состоит в том, чтобы сказать, что «я хочу, по крайней мере один член существовать», а затем использовать minProperties:

{ 
    "type": "object", 
    "etc": "etc", 
    "minProperties": 1 
} 

Отметим также, что вы можете использовать "dependencies" большой эффект, если вы хотите дополнительное ограничения существуют, когда присутствует тот или иной элемент.

0
{ 
    ... 
    "anyOf": [ 
    { "required": ["city"] }, 
    { "required": ["address"] }, 
    { "required": ["zipcode"] }, 
    ] 
} 

Или использовать «oneOf», если точно одно свойство должно присутствовать