#ruby #validation #dry-rb
#ruby #проверка #dry-rb
Вопрос:
Учитывая, что у меня есть такой объект JSON, имеющий массив различных объектов, таких как:
{
"array": [
{
"type": "type_1",
"value": 5
},
{
"type": "type_2",
"kind": "person"
}
]
}
Согласно проверке схемы JSON, я могу проверить эту схему, используя это определение схемы JSOM:
{
"type": "object",
"properties": {
"array": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"type_1"
]
},
"value": {
"type": "integer",
"enum": [
5
]
}
}
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"type_2"
]
},
"kind": {
"type": "string",
"enum": [
"person"
]
}
}
}
]
}
}
}
}
Как я могу проверить входной JSON с помощью драгоценного камня dry-schema? У вас есть какие-нибудь идеи?
Комментарии:
1. Вы можете повторно использовать схемы, поэтому настройте схему для элемента, который вы хотите проверить, а затем используйте эту схему в качестве определения, например
required(:array).hash(YourSchema)
. Docs2. спасибо за ответ, но это не то, что мне нужно. Что мне нужно, так это проверить массив различных схем объектов. Мне нужно что-то вроде
requred(:array).array(Type1Schema | Type2Schema)
3. И почему это не работает? Документы показывают »
s1 | s2
— обе или одна из схем должны пройти», что, по-видимому, вас интересует? Если вам нужны более сложные наборы правил, я бы рекомендовал переключиться наdry-validation