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

时间:2015-09-23 04:22:57

标签: ruby json jsonschema

我是这个json架构的新手,如果只有一个数据集,我可以编写json架构

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

示例json-schema为此

{   
        "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架构,如果它有相同架构的多个数据集来验证响应主体

1 个答案:

答案 0 :(得分:1)

以下是您要查找的架构。

{
  "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