Tùy thuộc vào tình huống của bạn, có một vài cách tiếp cận khác nhau. Tôi có thể nghĩ ra bốn cách khác nhau để yêu cầu một trường có điều kiện.
Sự phụ thuộc
Các dependenciestừ khóa là một biến thể có điều kiện của các requiredtừ khóa. Báo trước thuộc tính trong dependencies, nếu thuộc tính có trong JSON đang được xác thực, thì lược đồ được liên kết với khóa đó cũng phải hợp lệ.  Nếu có thuộc tính "foo", thì thuộc tính "bar" là bắt buộc
{
  "type": "object",
  "properties": {
    "foo": { "type": "string" },
    "bar": { "type": "string" }
  },
  "dependencies": {
    "foo": { "required": ["bar"] }
  }
}
Cũng có một dạng rút gọn nếu lược đồ chỉ chứa requiredtừ khóa.
{
  "type": "object",
  "properties": {
    "foo": { "type": "string" },
    "bar": { "type": "string" }
  },
  "dependencies": {
    "foo": ["bar"]
  }
}
Hàm ý
Nếu điều kiện của bạn phụ thuộc vào giá trị của một trường, bạn có thể sử dụng khái niệm logic boolean được gọi là hàm ý. "A ngụ ý B" có nghĩa là, nếu A đúng thì B cũng phải đúng. Hàm ý cũng có thể được diễn đạt là "! A hoặc B".  Thuộc tính "foo" không bằng "bar" hoặc thuộc tính "bar" là bắt buộc . Hay nói cách khác: Nếu thuộc tính "foo" bằng "bar", thì thuộc tính "bar" là bắt buộc
{
  "type": "object",
  "properties": {
    "foo": { "type": "string" },
    "bar": { "type": "string" }
  },
  "anyOf": [
    {
      "not": {
        "properties": {
          "foo": { "const": "bar" }
        },
        "required": ["foo"]
      }
    },
    { "required": ["bar"] }
  ]
}
Nếu "foo" không bằng "bar", #/anyOf/0kết quả khớp và xác thực sẽ thành công. Nếu "foo" bằng "bar", #/anyOf/0không thành công và #/anyOf/1phải có giá trị để anyOfxác thực thành công.
Enum
Nếu điều kiện của bạn dựa trên enum, thì sẽ dễ dàng hơn một chút.  "foo" có thể là "bar" hoặc "baz". Nếu "foo" bằng "bar", thì "bar" là bắt buộc. Nếu "foo" bằng "baz", thì "baz" là bắt buộc.
{
  "type": "object",
  "properties": {
    "foo": { "enum": ["bar", "baz"] },
    "bar": { "type": "string" },
    "baz": { "type": "string" }
  },
  "anyOf": [
    {
      "properties": {
        "foo": { "const": "bar" }
      },
      "required": ["bar"]
    },
    {
      "properties": {
        "foo": { "const": "baz" }
      },
      "required": ["baz"]
    }
  ]
}
Nếu-Thì-Khác
Một sự bổ sung tương đối mới để JSON Schema (draft-07) cho biết thêm if, thenvà elsetừ khóa.  Nếu thuộc tính "foo" bằng "bar", thì thuộc tính "bar" là bắt buộc
{
  "type": "object",
  "properties": {
    "foo": { "type": "string" },
    "bar": { "type": "string" }
  },
  "if": {
    "properties": {
      "foo": { "const": "bar" }
    },
    "required": ["foo"]
  },
  "then": { "required": ["bar"] }
}
CHỈNH SỬA 23/12/2017: Đã cập nhật phần hàm ý và thêm phần If-Then-Else.
CHỈNH SỬA 06/04/2018: Sửa lỗi cho If-Then-Else và cập nhật singleton enums để sử dụng const.