【问题标题】:A common JSON Schema for similar structure相似结构的通用 JSON Schema
【发布时间】:2015-03-15 09:41:37
【问题描述】:

我对 json 和 json 架构完全陌生,所以我有一个问题(但我不知道它有多大意义)。我们可以创建一个对于类似类型的结构很常见的 json 模式。例如:

一个单一的模式可用于验证以下 json

JSON:

{
"Team_Table":
[{"Name":"New Zealand", "Match":"Six", "Won":"Six"}]
}

{
"Story_Taller":
[{"Story":"No Name", "Chapter":"Don't know"}]
}

相似之处:

  1. 数组中只有一个对象
  2. 对象具有字符串值。

不同之处:

  1. 属性数量不同
  2. 两者的键不同

我们可以这样做吗?

【问题讨论】:

  • 请在投赞成票或反对票时添加评论。

标签: json jsonschema json-schema-validator


【解决方案1】:

也许这对你有帮助:

{
  "properties": {
    "Story_Taller": {
      "type": "array",
      "maxItems": 1,
      "items": {
        "properties": {
          "Chapter": {
            "type": "string"
          },
          "Story": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "Team_Table": {
      "type": "array",
      "maxItems": 1,
      "items": {
        "properties": {
          "Name": {
            "type": "string"
          },
          "Match": {
            "type": "string"
          },
          "Won": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "oneOf": [
    {
      "title": "Story_Taller",
      "required": [
        "Story_Taller"
      ]
    },
    {
      "title": "Team_Table",
      "required": [
        "Team_Table"
      ]
    }
  ]
}

用(短)词:

在您的 JSON 中,必须有一个属性为“Story_Taller”或“Team_Table”,最多包含 1 个项目

"oneOf": [ ... ]

两个数组的属性由项定义

“Story_Taller”必须具有“Chapter”和“Story”且没有附加属性。 “Team_Table”必须具有“Name”、“Match”、“Won”且没有其他属性。 而且它们都被定义为字符串。

【讨论】:

  • @Riki 对你有帮助吗?
猜你喜欢
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多