架构验证未验证 Json 中的多个条目
Schema Validation not validating mutiple entries in Json
Json架构验证通过,即使元素在重复。该架构尝试使用 "additionalProperties" 作为 false 和 "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 模式中的重复元素。
问题是您的测试 JSON 无效。 JSON 中未定义对象中的重复属性。 stats
的第二次出现将被忽略或覆盖第一次出现。但是,最终,stats
只会出现一次。当您的测试数据被读入内存时,它看起来像 { "stats": "56989" }
,因此验证成功。
为了测试 additionalProperties
and/or maxProperties
,您的测试数据需要包含唯一键。例如 { "stats", "56989", "foo": "bar" }
将是一个合适的测试用例。
Json架构验证通过,即使元素在重复。该架构尝试使用 "additionalProperties" 作为 false 和 "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 模式中的重复元素。
问题是您的测试 JSON 无效。 JSON 中未定义对象中的重复属性。 stats
的第二次出现将被忽略或覆盖第一次出现。但是,最终,stats
只会出现一次。当您的测试数据被读入内存时,它看起来像 { "stats": "56989" }
,因此验证成功。
为了测试 additionalProperties
and/or maxProperties
,您的测试数据需要包含唯一键。例如 { "stats", "56989", "foo": "bar" }
将是一个合适的测试用例。