jsonschema - hvordan validere JSON-skjema av returtypen String | undefined ved bruk av TypeScript
De to variantene av mitt JSON-svar er:
{
firstName: "abc",
LastName: "xyz",
Address: "abc123"
}
og
{
firstName: undefined,
LastName: undefined,
Address: undefined
}
Selv om definert JSON-skjema som:
var ResponseSchema = {
"firstName": {
"type": [String,undefined],
},
"LastName": {
"type": [String,undefined],
},
"Address": {
"type": [String,undefined],
},
"required": [
"firstName",
"LastName",
"Address",
],
}
Responsobjekt:
{
firstName: undefined,
LastName: undefined,
Address: undefined
}
får en feil som:
krever egenskapen "firstName"
krever egenskapen "LastName"
krever egenskapen "Address"
bruker "jsonschema" Node-pakken.
Svar #1
Først: Bruk riktige typenavn i skjemaet ditt (strenger)
Du vil skrive et JSON-skjema. I henhold til definisjonen kan type-en din være enten en streng eller en liste over strenger. Det du gjør, er å sende inn en TypeScript-type-definisjon, ikke en streng.
Prøv
"firstName": {
"type": ["string", "null"],
},
"LastName": {
"type": ["string", "null"],
},
"Address": {
"type": ["string","null"],
},
"required": [
"firstName",
"LastName",
"Address",
]
Andre: undefined er ikke en gyldig type for et JSON-skjema
Å ha en egenskap satt til undefined regnes som at den egenskapen ikke er satt. Jeg vil foreslå at du går over til null i slike tilfeller.
Svar #2
Jeg kjenner ikke jsonschema, men definisjonen din og de obligatoriske feltene dine ser ut til å være en slags konseptuell feil for meg.
Du definerer
"required": [
"firstName",
"LastName",
"Address"
]
men sett typen til hvert felt til String,undefined. Hvis du nå setter dem til undefined, blir kravet ikke oppfylt.
Med andre ord: jsonschema ser ut til å fungere, siden det gir den feilen for svaret ditt:
{
"firstname": undefined,
"Lastname": undefined,
"Address": undefined,
}
