【问题标题】:json-schema with additional properties of type x and at least onejson-schema 具有类型 x 的附加属性和至少一个
【发布时间】:2021-02-18 10:53:38
【问题描述】:

问题:

有没有办法告诉 json-schema 我想要 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"  
}

这样的事情可能吗?

【问题讨论】:

    标签: jsonschema


    【解决方案1】:

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

    为什么不呢? minProperties: 2 肯定会得到你需要的东西:'a' 是必需的,所以需要一个额外的属性。

    如果除了可选属性“b”之外,您还想要一个附加属性,那么您可以使用if/then/else

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

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 1970-01-01
      • 2014-01-15
      • 2015-11-04
      • 2018-04-18
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多