具有A和B或C必需属性的对象的JSON模式

Ale*_*hak 4 jsonschema

我有一个请求的两个可能的JSON对象:

{
  "from": "string",
  "to": "string",
  "text": "string"
}
Run Code Online (Sandbox Code Playgroud)

要么

{
  "number": "integer",
  "text": "string"
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,"text"属性都是可选的.其他属性是必需的(从"和"到""的"数字或两者").

验证这一点的正确JSON模式是什么?

Jas*_*ers 9

这是另一个我认为更清楚的解决方案.该dependencies条款确保"从"和"到"总是成对出现.然后该oneOf子句可以非常简单并避免使用不需要的样板.

{
  "type": "object",
  "properties": {
    "from": { "type": "string" },
    "to": { "type": "string" },
    "number": { "type": "integer" },
    "text": { "type": "string" }
  },
  "dependencies": {
    "from": ["to"],
    "to": ["from"]
  },
  "oneOf": [
    { "required": ["from"] },
    { "required": ["number"] }
  ]
}
Run Code Online (Sandbox Code Playgroud)