Валидатор JSON Schema с массивом конкретных объектов (разных типов)
У меня есть следующие данные JSON, которые я хотел бы проверить.
[
{ "fieldType": "oneThing" },
{ "fieldType": "anotherThing" },
{ "fieldType": "oneThing" }
]
И моя текущая (нерабочая) схема:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/definitions/oneThing" },
{ "$ref": "#/definitions/anotherThing" }
]
},
"definitions": {
"oneThing": {
"type": "object",
"properties": {
"fieldType": {
"type": "string",
"pattern": "oneThing"
}
},
"required": [
"fieldType"
]
},
"anotherThing": {
"type": "object",
"properties": {
"fieldType": {
"type": "string",
"pattern": "anotherThing"
}
},
"required": [
"fieldType"
]
}
}
}
Я получаю следующую ошибку, но не вижу, что я делаю неправильно.
[] Object value found, but an array is required
Больше контекста: я генерирую динамическую HTML-форму на основе конфигурации JSON. Форма HTML будет иметь определенный набор допустимых типов полей, и один и тот же тип поля может существовать несколько раз в конфигурации, таким образом oneThing
появляется более одного раза в приведенном выше примере JSON.
1 ответ
Решение
Оказывается, это не имело ничего общего с моей схемой JSON, а с тем, как я вызывал библиотеку, которая анализировала схему.
Я использую https://github.com/justinrainbow/json-schema и передаю неверный тип данных классу. Duh!