如何验证 JSON 架构中的属性数量

How to validate number of properties in JSON schema

我正在尝试为 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"
}

我知道应该有关于两个同名字段的警告,但是如果提交了上面的字段,有没有办法强制验证失败?我希望它仅在字段 'name'

出现一次时才验证

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

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

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

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