Проверка схемы Json в Asp.Net Web api с использованием C #

Цель: требуется либо prop1, либо prop2, а prop3, prop4 - всегда.

Проблема. Я попытался проверить json-запрос, используя указанную ниже схему json, но мне удалось проверить только на prop3 и prop4.

Схема Json:

{
'type':'object',
 'properties':{
'prop1':{'type':'string'},
'prop2':{'type':'string'},
 'prop3':{'type':'string','required':true},
  'prop4':{'type':'string','required':true}
 },
'additionalProperties':false,
 'anyOf':[{'required':['prop1']},{'required':['prop2']}]
}

testJson1: {"prop2": "fdsd", "prop3": "101655", "prop4": "E8CD6fghggg"} Примечание. Это хорошо: testJson2 {"prop3": "101655", "prop4": "E8CD6fghggg"} Примечание. Это тоже верно, но ожидалось недействительным.


person Super User    schedule 16.01.2015    source источник


Ответы (1)


Вы используете два разных способа выражения требуемых свойств:

Для prop3 и prop4 вы используете способ json-schema Draft V3, чтобы указать required.

'prop3':{'required':true},

Для prop1 и prop2 вы используете json-schema Draft v4 (требуется массив).

'required':['prop1']

Возможно, вы используете Newtonsoft Json.Net, который использует Draft v3. Вот почему у вас работают только «prop3» и «prop4). Поэтому вам нужно последовательно изменить спецификацию требуемого на V3 или V4, а затем выбрать подходящий валидатор.

person jruizaranguren    schedule 19.01.2015