Jsonschema json模式-允许在所需属性中使用逻辑或

Jsonschema json模式-允许在所需属性中使用逻辑或,jsonschema,json-schema-validator,json-schema-defaults,Jsonschema,Json Schema Validator,Json Schema Defaults,这个问题的另一个标题是“所需的财产组合” 假设我正在使用json模式,如下所示: { "$schema": "http://json-schema.org/draft-07/schema#", "title": "JSON schema for NLU (npm-link-up) library.", "type": "object", "additionalProperties": false, "required": [ "list", "packages", "

这个问题的另一个标题是“所需的财产组合”

假设我正在使用json模式,如下所示:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "JSON schema for NLU (npm-link-up) library.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "list", "packages", "deps"
  ],
   // ... 
}
我想做的是,做一个“列表”、“包”、“deps”,以满足需要。应该有一个,但不超过一个

所以可能是这样的:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "JSON schema for NLU (npm-link-up) library.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    {
      "min": 1,
      "max": 1,
      "selection":  ["list", "packages", "deps"]
    }
  ],
}


这可能吗?

JSON模式中有四个布尔组合词关键字:

  • allOf
    -和
  • 任何一个
    -或
  • 其中一个
    -异或(异或)
  • -非
你想要的可以这样做

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "JSON schema for NLU (npm-link-up) library.",
  "type": "object",
  "additionalProperties": false,
  "oneOf": [
    { "required": ["list"] },
    { "required": ["packages"] },
    { "required": ["deps"] }
  ]
}

JSON模式中有四个布尔组合词关键字:

  • allOf
    -和
  • 任何一个
    -或
  • 其中一个
    -异或(异或)
  • -非
你想要的可以这样做

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "JSON schema for NLU (npm-link-up) library.",
  "type": "object",
  "additionalProperties": false,
  "oneOf": [
    { "required": ["list"] },
    { "required": ["packages"] },
    { "required": ["deps"] }
  ]
}

你确定这是正确的语法吗?如果我想要多个
“其中一个”
,该怎么办?哎呀,我解决了语法问题。
oneOf
数组中的每个项都应该是JSON模式。如果需要多个
oneOf
,可以使用
allOf
。例如,
{“allOf”:[{“oneOf”:[…]},{“oneOf”:[…]}}
。您确定这是正确的语法吗?如果我想要多个
“其中一个”
,该怎么办?哎呀,我解决了语法问题。
oneOf
数组中的每个项都应该是JSON模式。如果需要多个
oneOf
,可以使用
allOf
。例如,
{“allOf”:[{“oneOf”:[…]},{“oneOf”:[…]}}