Как проверить несколько $ ref в свойстве типа JsonSchema

Я хочу использовать схему Json для проверки некоторых входящих Json в спокойной веб-службе. Но у меня проблемы с использованием нескольких $ ref в свойстве type схемы.

Мне нужно уметь это делать:

"type" : [ {"$ref" : "#myObjectRef"}, {"$ref" : "#otherRef"} ]

т.е. объект должен соответствовать одной из указанных схем.

Но когда я запускаю это через Json.Net с помощью JsonSchema.Parse, я получаю следующую ошибку: «Исключение, токен строки типа схемы JSON, получил массив»

Я получаю точно такую ​​же ошибку при попытке этой схемы Json для оператора из TinCan Api через валидатор Json.Net. Но схема json проверяется на соответствие JsonSchema Lint.

Как Json.Net может обрабатывать несколько вариантов типа в схеме? Есть ли альтернативная библиотека .net, которая будет выполнять эту проверку?


person Matt27    schedule 21.01.2014    source источник
comment
Кстати, вы подняли ошибку на Json.Net? Это явно ошибка.   -  person cloudfeet    schedule 21.01.2014
comment
Кроме того, они поддерживают только v3, а не v4?   -  person cloudfeet    schedule 21.01.2014


Ответы (1)


Поле type в схеме JSON должно быть строкой или массивом уникальных строк. Эти строки могут быть любыми примитивами JSON.

  • множество
  • логический
  • целое число
  • номер
  • нулевой
  • объект
  • нить

Вам нужно поле oneOf.

{
    "oneOf": [{"$ref": "#myObjectRef"}, {"$ref": "#otherRef"}]
}

Эта схема требует, чтобы объект соответствовал одной (и только одной) из двух схем, на которые имеется ссылка. Если соответствие обеим схемам также допустимо, вы можете использовать вместо них anyOf.

использованная литература

person Jason Desrosiers    schedule 28.03.2015