java - 针对 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:?]...
我看不到错误在哪里。
解决方案
好吧,错误似乎在您的方案中,而不是在要验证的文件中。所需的属性是数组类型,但数组没有元素。
当您删除属性required
或提供至少一个字符串元素指示应需要哪些属性时,验证成功:
"required": [
"name"
]
从JSON Schema 文档的 Draft 4 开始,数组必须至少有一个元素。
推荐阅读
- android - 使用多部分将多张带视频的图像一张一张上传到服务器
- c++ - 警告:在函数返回类型 [-Wignored-qualifiers] 上忽略类型限定符
- sql-server - 将 javaEE 连接到 SQL Server?
- php - 在 php 中使用 http_response_code 而非 200 发送邮件时出现问题
- pdf - 如何将 PDF 中的字体对象转换为 CFF
- angular - AngularFire 和 Firestore - 在导航组件时查询一次集合
- php - 将一个文件php的数组值放入另一个文件的另一个数组中
- java - 在 Maven 中运行 JUnit 测试时出现 ClassNotFoundException
- python - 从 cx_Oracle 默认数据类型设置正确的 pandas.DataFrame 数据类型
- python - 如何将 XLS 文件与 json 文件进行比较?