How to use JSON Schema to require one of two fields

10,285

You need to add:

"anyOf": [
  { "required":
    [ "emailAddress" ] },
  { "required":
    [ "PhoneNumber" ] }
]

to the schema of RecordObject property.

It requires that at least one of fields is present. If you need exactly one field (i.e., not both) present, you need to use "oneOf" keyword (the rest should be the same).

This reference of JSON Schema keywords can be useful.

Share:
10,285
Jolly
Author by

Jolly

Updated on June 15, 2022

Comments

  • Jolly
    Jolly almost 2 years

    I want to validate JSON to make one of two fields manadatory.

    Let's assume we have two fields (Email Address and Phone Number). I want to make sure that one of the two fields is required for the record to be valid.

    {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "id": "ExampleID-0212",
      "title": "objectExamples",
      "description": "Demo",
      "type": "object",
      "properties": {
        "RecordObject": {
          "type": "object",
          "properties": {
            "emailAddress": {
              "type": "string"
            },
            "PhoneNumber": {
              "type": "number"
            }
          }
        }
      },
      "required": [
        "RecordObject"
      ]
    }