jsonSchema 按模式验证数字键

Dmi*_*y K 2 json jsonschema json-schema-validator

你能帮我吗,我如何验证以下 json 中列表项的“键”(例如“1”、“2”、“3”):

   {
    "list" : {
        "1" : {
            "element1" : "1",
            "element2" : "2"
        },
        "2" : {
            "element1" : "1",
            "element2" : "2"
        },
        ....
        "512" : {
            "element1" : "1",
            "element2" : "2"
        }
    }
   }
Run Code Online (Sandbox Code Playgroud)

请给我一些常见的例子来验证 json 中的密钥。

Jas*_*ers 5

JSON Schema 有三种方法来约束对象的属性名称。

特性

properties关键字允许您设置属性名称的精确匹配。

{
  "type": "object",
  "properties": {
    "1": { ... },
    "2": { ... },
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

模式属性

patternProperties关键字限制与正则表达式匹配的任何属性名称,以根据给定架构进行验证。

{
  "type": "object",
  "patternProperties": {
    "[1-9][0-9]*": { ... }
  }
}
Run Code Online (Sandbox Code Playgroud)

属性名称

关键字propertyNames约束属性名称以匹配给定的架构。

{
  "type": "object",
  "propertyNames": {
    "pattern": "[1-9][0-9]*"
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑 12-19-2018改进答案,添加缺失的patternProperties选项,添加新的(自原始答案以来)选项propertyNames