枚举属性/键的json-schema

时间:2016-05-02 04:00:09

标签: jsonschema

我有一个像这样的JSON文档

{
   "visits": {
      "1": 1000,
      "2": 300,
      "3": 43,
   }
}

但是所有键("1""2""3")实际上都是一个枚举,它存储为整数以节省存储空间。我想记录枚举的描述。例如。

1 => When the user is guest
2 => When the user is logged in
3 => When the user is admin

如何将它放在json架构中?

1 个答案:

答案 0 :(得分:0)

您可以使用patternProperties来描述数字属性,然后使用additionalProperties来禁止任何与模式不匹配的属性:

{
    "type": "object",
    "patternProperties": {
        "^(0|[1-9][0-9]*)$": {"type": "string"}
    },
    "additionalProperties": false
}

所以在这里,匹配^(0|[1-9][0-9]*)$(非负整数)的任何属性都必须是字符串,并且不允许使用其他属性。

(如果您希望强制执行某种排序(例如"5"必须仅在"4"也已定义的情况下存在),那么您无法用JSON Schema表达它。)