在有效的JSON模式中不理解此类型定义

时间:2015-09-03 14:47:53

标签: json schema jsonschema

有关CatsDogs的定义:

{
  "Boxes": {
        "type":"object",
        "properties":   {
                        "Cats": {"type":["integer","null"]},
                        "Dogs": {"type":["integer","null"]}
                        }
        }
}

"type": [ "integer", "null" ]强加什么限制?

以下JSON针对此架构进行验证:{ "Boxes": { "Cats": [2, 3, 4, null, "hi"] } }。由于Cats包含一个数组,而该数组又包含整数,字符串和null,因此我认为验证失败了。

1 个答案:

答案 0 :(得分:2)

首先,如果您希望数据具有名为"Boxes"的顶级属性,则需要将顶级数据定义为具有该属性的对象,例如

{
    "type": "object",
    "properties": {
        "Boxes": {
            "type":"object",
            "properties": {
                "Cats": {"type":["integer","null"]},
                "Dogs": {"type":["integer","null"]}
            }
        }
    }
}

使用您编写的架构,顶级"Boxes"将被忽略,因为它不是关键字,因此架构实际上没有任何约束。

如果您使用了上述构造,那么"Cats""Dogs"属性将被约束为整数或null

不允许使用数组 - 如果需要数组,则应为这些属性定义"type":"array",然后使用items约束数组项。