json 模式按模式验证数字键

标签 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"
        }
    }
   }

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

最佳答案

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

属性

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

{
  "type": "object",
  "properties": {
    "1": { ... },
    "2": { ... },
    ...
  }
}

模式属性

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

{
  "type": "object",
  "patternProperties": {
    "[1-9][0-9]*": { ... }
  }
}

属性名称

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

{
  "type": "object",
  "propertyNames": {
    "pattern": "[1-9][0-9]*"
  }
}

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

关于json 模式按模式验证数字键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39378941/

相关文章:

android - json改变元素的顺序

c# - ASP.NET MVC/.NET 的 to_json (rails ) 类似功能

javascript - Node.js 不解析从 API 返回的 JSON

testing - 如何在Postman中检查json模式?

node.js - Node AJV 验证架构

javascript - 使用 ajax 获取的数据作为 json 被随机推送到一个数组中

c# - BotFramework - 使用 Json 模式定义表单 - 如何访问 OnCompletion 方法中的表单字段?

json - JSON 架构验证草案 07 中 "minContains"和 "maxContains"的解决方法?

javascript - 使用 Dojo 时无法识别外部库 (AJV)

json - 确保 JSON 模式中的一个属性不为空