模式验证不验证Json中的多个条目

时间:2015-06-24 18:15:31

标签: java json validation jsonschema

即使元素重复,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中的重复元素。

1 个答案:

答案 0 :(得分:0)

问题是您的测试JSON无效。 JSON中未定义对象中的重复属性。第二次出现stats将被忽略,或者它将覆盖第一次出现。但是,它最终只会出现一次stats。当您的测试数据被读入内存时,它看起来像{ "stats": "56989" },因此成功验证。

为了测试additionalProperties和/或maxProperties,您的测试数据需要包含唯一键。例如,{ "stats", "56989", "foo": "bar" }将是一个合适的测试用例。