Vorrei sapere se posso definire uno schema JSON (bozza 4) che richiede almeno una delle molte proprietà possibili per un oggetto. So già di allOf
, anyOf
e oneOf
ma non riesco a capire come usarli nel modo che voglio.Come definire uno schema JSON che richiede almeno una delle molte proprietà
Ecco alcuni esempio JSON per illustrare:
// Test Data 1 - Should pass
{
"email": "[email protected]",
"name": "John Doe"
}
// Test Data 2 - Should pass
{
"id": 1,
"name": "Jane Doe"
}
// Test Data 3 - Should pass
{
"id": 1,
"email": "[email protected]",
"name": "John Smith"
}
// Test Data 4 - Should fail, invalid email
{
"id": 1,
"email": "thisIsNotAnEmail",
"name": "John Smith"
}
// Test Data 5 - Should fail, missing one of required properties
{
"name": "John Doe"
}
desidero richiedere almeno id
o email
(accettando anche entrambi) ed ancora superato la convalida secondo il formato. Utilizzando oneOf
non riesce la convalida se fornisco sia la validazione (prova 3), anyOf
passa anche se uno di loro non è valido (prova 4)
Ecco il mio schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "https://example.com",
"properties": {
"name": {
"type": "string"
}
},
"anyOf": [
{
"properties": {
"email": {
"type": "string",
"format": "email"
}
}
},
{
"properties": {
"id": {
"type": "integer"
}
}
}
]
}
mi potete aiutare come ottenere la convalida corretta per il mio caso d'uso?