如果 json 有多个数据集,我该如何编写 json 模式

How can i write the json schema if json has multiple data set

我是这个 json 模式的新手,如果它只有一个如下所示的数据集,我可以编写 json 模式

{
    "employees": [
        {
            "id": 1,
            "name": "aaa"
        }
}

示例json-架构是

{   
        "type" : "object",
            "required" : ["employees"],
            "properties" : {        
                "employees" : { "type" : "Array",
                                "items" : [
                                "properties" : {
                                                    "id" : {"type" : "integer"},
                                                    "name" : {"type" : "string"},                                                   
                                                },
                                            "required" : ["id","name"]
                                            ]
                                }
                            }
}

但如果我们有多个数据集

,我就无法在 ruby 中编写 json 模式
{
    "employees": [
        {
            "id": 1,
            "name": "aaa"
        },
        {
            "id": 2,
            "name": "bbb"
        },
        {
            "id": 3,
            "name": "cccc"
        },
        {
            "id": 4,
            "name": "ddd"
        },
        {
            "id": 5,
            "name": "eeee"
        }
    ]
}

任何人都可以帮我写 json 模式,如果它有多个数据集用于相同的模式来验证响应主体

这是您要查找的架构。

{
  "type": "object",
  "required": ["employees"],
  "properties": {
    "employees": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": { "type": "integer" },
          "name": { "type": "string" }
        },
        "required": ["id", "name"]
      }
    }
  }
}

你们真的很亲密。 items 关键字有两种形式。 items 的值可以是模式或模式数组(1)。

如果 items 是模式,则意味着数组中的每个项目都必须符合该模式。这是在这种情况下有用的形式。

如果items的值是一个模式数组,它描述了一个元组。例如,此架构 ...

{
  "type": "array",
  "items": [
    { "type": "boolean" },
    { "type": "string" }
  ]
}

将验证此...

[true, "foo"]
  1. http://json-schema.org/latest/json-schema-validation.html#anchor37