-1

我对 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. 两者的键不同

我们可以这样做吗?

4

1 回答 1

0

也许这可以帮助你:

{
  "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”且没有其他属性。所有这些都被定义为字符串。

于 2015-03-16T08:56:17.243 回答