json模式,具有类型x和至少一个的其他属性

时间:2020-11-05 17:22:17

标签: jsonschema

问题:

有没有一种方法可以告诉json模式,我想要类型x和至少一个的其他属性?

简短说明(基于下面的代码块):

我想要一个带有一个必填项 a 的json文件。 b 是可选的,我至少需要一个附加项目。 附加项目的名称必须灵活。 因此,我无法给它起一个特定的名称并按要求将其标记。 而且因为 b 是可选的,所以我无法使用'minProperties'

类似的东西(不存在)

"additionalProperties": {
    "type": "string",
    "minAdditionalProperties": 1
  }

未完成的json模式

{
 "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "properties": {
    "a": {
        "type": "number"
    },
    "b": {
        "type": "number" 
    }
  },
  "required": ["a"],
  "additionalProperties": {
    "type": "string"
  }
}

预期结果:

b始终是可选的

invalid:
{
    "a": 1
}
----
{
    "a": 1,
    "b": 2
}

valid:
{
    "a": 1,
    "x": "2"
}
----
{
    "a": 1,
    "x1": "2",
    "x2": "4"  
}

像这样甚至有可能吗?

1 个答案:

答案 0 :(得分:0)

并且因为b是可选的,所以我不能使用'minProperties'

为什么不呢?当然minProperties: 2会为您提供所需的东西:“ a”是必需的,因此还需要一个附加属性。

如果除了可选属性“ b”之外还需要其他属性,则可以使用if / then / else

  "if": {
    "required": [ "b" ]
  },
  "then": {
    "minProperties": 3
  }
  "else": {
    "minProperties": 2
  }