JSON 相当于 XSD maxOccurs 的模式

JSON Schema equivalent of XSD maxOccurs

我已经搜索了几个小时,但找不到我所查询的示例。我有一个 XSD 模式(这是一个真正精简的版本)

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Transaction-Header">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Origin" type="xs:string" minOccurs="1" maxOccurs="1">
        </xs:element>
        <xs:element name="Type" type="xs:string" minOccurs="0" maxOccurs="1">
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Transaction">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Transaction-Header" minOccurs="1" maxOccurs="1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

我正在将它转换为 JSONSchema(这是一个巨大的 xsd)并取得了很大的成功,但我似乎无法弄清楚如何合并 minOccurs 和 maxOccurs 限制。

本质上,应该永远只有 1 Transaction-Header 即

{
  "Transaction": {
    "Transaction-Header": {
      "Origin": "Origin",
      "Type": "Type"
    }
  }
}

无效:

{
  "Transaction": {
    "Transaction-Header": {
      "Origin": "Origin",
      "Type": "Type"
    },
    "Transaction-Header": {
      "Origin": "Origin",
      "Type": "Type"
    }
  }
}

我知道这可以通过使用数组 minItems / maxItems 功能来完成,但这些实际上是元素而不是数组,我真的不想尽可能地定义它们。

请问有人知道如何(或即使)这是可能的吗?

JSON 架构使用 JSON 文档模型,您的第二个示例无效 [​​=17=] -- 属性 名称不能出现两次。您必须重命名您的属性以便它们是唯一的,或者使用数组。

如果您使用数组,您可以使用 containsminContains/maxContains 来指定数组中项目的限制。