Схема JSON в draftv3
Запрос:
{
"PersonSearch":
{
"LastName": "Doe",
"Gender":"Male",
"State" : "FL"
}
}
или же
{
"PersonSearch":
{
"FirstName": "John",
"Gender":"Male",
"State" : "FL"
}
}
Что такое схема JSON, что я могу проверить оба запроса. Он должен быть совместим с drraftV3.
1 ответ
Ваши требования, кажется, что вам нужно либо "FirstName"
или же "LastName"
, правильный?
Нет способа указать одну схему, которая работает как для v4, так и для v3, из-за некоторых фундаментальных изменений в спецификации: в v4 type
может содержать только строку (или массив строк). Не разрешается использовать схемы внутри type
,
Вы должны избегать использования v3, если это возможно, и перейти к v4.
Метод v4:
В этом случае вам нужно будет использовать anyOf
для этого конкретного ограничения:
{
"type": "object",
"anyOf": [
{"required": ["FirstName"]},
{"required": ["LastName"]}
],
"properties": {...}
}
v3
В синтаксисе v3 вы используете type
вместо anyOf
(также, required
является логическим)
{
"type": [
{
"type": "object",
"properties": {
"FirstName": {"required": true}
}
},
{
"type": "object",
"properties": {
"LastName": {"required": true}
}
}
],
"properties": {...}
}
преобразование v3 -> v4
Если вы застряли со смесью схем v3/v4, этот инструмент (json-schema-compatibility) нормализует схемы (v3 или v4) в синтаксис v4.
Если вы работаете в JavaScript, вы можете запустить схемы с помощью инструмента совместимости, прежде чем использовать их. Затем вы можете использовать чисто v4-инструменты для фактической проверки / чего угодно.