类似结构的常见JSON模式

时间:2015-03-15 09:41:38

标签: json jsonschema json-schema-validator

我对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. 对象具有字符串值。
  3. 异性及其:

    1. 属性数量不同
    2. 中的键不同

      我们可以这样做吗?

1 个答案:

答案 0 :(得分: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"
      ]
    }
  ]
}

in(short)words:

  在您的JSON中,必须有一个属性为" Story_Taller"或" Team_Table"最多1项

"oneOf": [ ... ]
  

两个数组的属性都由项目

定义

" Story_Taller"必须有"章"和"故事"而且没有其他属性。 " Team_Table"必须有"姓名","匹配","赢得"而且没有其他属性。 所有这些都被定义为字符串。