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

时间:2018-05-18 16:02:56

标签: 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"
    }
},
"additionalProperties": false
}

与模式相比,以下JSON被归类为有效:

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

我知道应该有关于这两个字段具有相同名称的警告,但如果提交上述内容,是否有办法强制验证失败?我希望它只在字段'name'

出现时才进行验证

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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