即使元素重复,JsonSchema验证也会通过。模式尝试使用" additionalProperties"来阻止相同的操作。为假,和" maxProperties"为1 。
我有以下json文件,其中一个字段重复。
{
"stats": "56989",
"stats": "56989"
}
我尝试针对以下架构验证这一点: -
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "http://jsonschema.net#",
"type": "object",
"additionalProperties": false,
"maxProperties": 1,
"properties": {
"stats": {
"id": "http://jsonschema.net/stats#",
"type": "string",
"maxLength": 5,
"minLength": 5,
"additionalProperties": false,
"maxProperties": 1
}
},
"required": [
"stats"
]
}
json对模式成功验证。虽然我提供了 maxProperties = 1 ,但验证通过了。
请告诉我如何检查Json Schema中的重复元素。
答案 0 :(得分:0)
问题是您的测试JSON无效。 JSON中未定义对象中的重复属性。第二次出现stats
将被忽略,或者它将覆盖第一次出现。但是,它最终只会出现一次stats
。当您的测试数据被读入内存时,它看起来像{ "stats": "56989" }
,因此成功验证。
为了测试additionalProperties
和/或maxProperties
,您的测试数据需要包含唯一键。例如,{ "stats", "56989", "foo": "bar" }
将是一个合适的测试用例。