无论如何我在jsoncschema中定义一个字典?

时间:2015-07-30 08:28:03

标签: javascript json schema jsonschema

我正在尝试为object类型定义架构。有没有办法允许任何属性名称,但限制所有属性值以遵守某些架构。这样我可以允许任何key并确保所有values具有相同的结构/类型。

提前致谢。

2 个答案:

答案 0 :(得分:2)

additionalProperties关键字可以是布尔值,也可以是架构。

如果它是架构,那么该架构必须适用于不与propertiespatternProperties匹配的任何属性。因此,如果您的密钥可以是任何内容,那么您的架构就是:

{
    "type": "object",
    "additionalProperties": {"type": "integer"}
}

如果您想限制密钥,则需要使用patternProperties - 例如,仅限小写字母:

{
    "type": "object",
    "patternProperties": {
        "^[a-z]+$": {"type": "object"}
    },
    "additionalProperties": false
}

由于您要允许任何属性名称,additionalProperties是最适合您的解决方案。

答案 1 :(得分:1)

patternProperties看起来像我想要的那样。

我可以简单地做

{
  "type": "object",
  "patternProperties": {
    "*": { "type": "integer" }
  },
  "additionalProperties": false
}

允许任何键,并将所有值限制为整数。