Como validar um objeto com base no valor do objeto raiz no esquema json?
Oct 08 2020
Desejo validar a data de venda e a disponibilidade do cliente com base no valor do tipo de pedido. (Observação. Eles não estão no mesmo objeto). Existe alguma maneira de validar valores filho com base no valor raiz?
{
"type": "object",
"properties": {
"Order": {
"type": "object",
"properties": {
"OrderDetails": {
"type": "object",
"properties": {
"OrderType": {
"type": "string",
"enum": [
"Y",
"N"
]
}
}
}
}
},
"Sale": {
"type": "object",
"properties": {
"Saledate": {
"format": "date"/*should be present when OrderType is Y*/
}
}
},
"Customer": {
"type": "object",
"properties": {
"Avilability": {
"type": "string",
"enum": [
"Y",
"N"
]/*should be present when orderType is Y*/
}
}
}
}
}
Respostas
JasonDesrosiers Oct 10 2020 at 18:26
Você pode usar if/ thenpara criar descrever a restrição. O truque é que você precisa adicionar a restrição em um nível alto o suficiente no esquema para cobrir todas as propriedades envolvidas.
{
...
"if": {
"type": "object",
"properties": {
"Order": {
"type": "object",
"properties": {
"OrderDetails": {
"type": "object",
"properties": {
"OrderType": { "const": "Y" }
},
"required": ["OrderType"]
}
},
"required": ["OrderDetails"]
}
},
"required": ["Order"]
},
"then": {
"properties": {
"Sale": { "required": ["Saledate"] },
"Customer": { "required": ["Availability"] }
},
"required": ["Sale", "Customer"]
}
}
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas