【问题标题】:How to validate number of properties in JSON schema如何验证 JSON 模式中的属性数量
【发布时间】:2018-10-29 03:05:46
【问题描述】:

我正在尝试为一段 JSON 创建一个架构,并精简了我想要实现的示例。

我有以下 JSON 架构:

{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Set name",
"description": "The exmaple schema",
"type": "object",
"properties": {
    "name": {
        "type": "string"
    }
},
"additionalProperties": false
}

与架构相比,以下 JSON 被归类为有效:

{
"name": "W",
"name": "W"
}

我知道应该有关于两个同名字段的警告,但是如果提交上述内容,有没有办法强制验证失败?我希望它仅在字段“名称”仅出现一次时进行验证

【问题讨论】:

    标签: json schema jsonschema


    【解决方案1】:

    有一个maxProperties 约束可以限制对象中的属性总数。

    虽然具有重复属性的数据是一个棘手的情况,因为许多 json 解码实现会忽略重复。

    所以您的 JSON 模式验证库甚至不知道存在重复。

    【讨论】:

    • 这意味着第一个会被接受还是会使用最后一个?即如果我们有 { "a": 1, "a": 2 } 接受的值是 1 还是 2?
    • 这取决于特定的编程语言/库。例如,在 PHP 中,最后一个值将覆盖之前的:3v4l.org/UGHHC
    【解决方案2】:

    这不在 JSON Schema 的职责范围内。 JSON Schema 建立在 JSON 之上。在 JSON 中,对象中重复属性的行为是未定义的。如果您想收到关于此的警告,您应该通过单独的验证步骤运行它,以确保 JSON 有效,然后再将其传递给 JSON Schema 验证器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多