首页 > 解决方案 > 针对 json 模式的 Json 验证失败

问题描述

我使用 com.github.fge.jsonschema.main.JsonSchema 来验证 json。

这是 json 模式:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Team data",
  "description": "Validation schema",
  "type": "object",
  "additionalProperties": false,
  "required": [
  ],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 255,
      "description": "Name"
    }
  }
}

这是用于验证模式的 json:

{"name" : "name"}

这在我使用在线验证器检查时有效,但在测试中出现错误:

Caused by: com.github.fge.jsonschema.core.exceptions.InvalidSchemaException: fatal: invalid JSON Schema, cannot continue
Syntax errors:
[ {
  "level" : "error",
  "message" : "array must have at least one element",
  "domain" : "syntax",
  "schema" : {
    "loadingURI" : "#",
    "pointer" : ""
  },
  "keyword" : "required"
} ]
    level: "fatal"

    at com.github.fge.jsonschema.processors.validation.InstanceValidator.process(InstanceValidator.java:114) ~[json-schema-validator-2.2.10.jar:?]
    at com.github.fge.jsonschema.processors.validation.ValidationProcessor.process(ValidationProcessor.java:56) ~[json-schema-validator-2.2.10.jar:?]
    at com.github.fge.jsonschema.processors.validation.ValidationProcessor.process(ValidationProcessor.java:34) ~[json-schema-validator-2.2.10.jar:?]
    at com.github.fge.jsonschema.core.processing.ProcessingResult.of(ProcessingResult.java:79) ~[json-schema-core-1.2.10.jar:?]
    at com.github.fge.jsonschema.main.JsonSchemaImpl.doValidate(JsonSchemaImpl.java:77) ~[json-schema-validator-2.2.10.jar:?]
    at com.github.fge.jsonschema.main.JsonSchemaImpl.validate(JsonSchemaImpl.java:100) ~[json-schema-validator-2.2.10.jar:?]
    at com.github.fge.jsonschema.main.JsonSchemaImpl.validate(JsonSchemaImpl.java:110) ~[json-schema-validator-2.2.10.jar:?]...

我看不到错误在哪里。

标签: javajson

解决方案


好吧,错误似乎在您的方案中,而不是在要验证的文件中。所需的属性是数组类型,但数组没有元素。

当您删除属性required或提供至少一个字符串元素指示应需要哪些属性时,验证成功:

"required": [
    "name"
]

JSON Schema 文档的 Draft 4 开始,数组必须至少有一个元素。


推荐阅读