如何验证JSON模式中的属性数

如何验证JSON模式中的属性数,json,schema,jsonschema,Json,Schema,Jsonschema,我正在尝试为一段JSON创建一个模式,并精简了一个我试图实现的示例 我有以下JSON模式: { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Set name", "description": "The exmaple schema", "type": "object", "properties": { "name": { "type": "string" } }, "additio

我正在尝试为一段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”只出现一次时才进行验证。

存在一个可以限制对象中属性总数的约束

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


因此,您的JSON模式验证库甚至不知道存在重复项。

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

这意味着第一个会被接受还是最后一个会被使用?i、 如果我们有{“a”:1,“a”:2},接受的值是1还是2?这取决于特定的编程语言/库。例如,在PHP中,最后一个值将覆盖上一个值: