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,
}

Relaterte artikler