Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java json架构验证相对路径不工作(找不到URI)_Java_Json_Validation_Github_Json Schema Validator - Fatal编程技术网

java json架构验证相对路径不工作(找不到URI)

java json架构验证相对路径不工作(找不到URI),java,json,validation,github,json-schema-validator,Java,Json,Validation,Github,Json Schema Validator,我正在查看github中验证程序代码的2.2.6版本。 我没有更改回购协议“”中的任何代码 当我用引用第二个模式文件的json模式测试示例1时,我无法让它运行(当我求助于硬编码URI时,我可以让它工作) 我只是简单地重新编写了“com.github.fge.jsonschema.examples.Example1.java”以使用我的团队json模式和json文件。 我已经构建了这个项目,并将我的json模式文件复制到“json模式验证器\bin\com\github\fge\jsonschem

我正在查看github中验证程序代码的2.2.6版本。 我没有更改回购协议“”中的任何代码

当我用引用第二个模式文件的json模式测试示例1时,我无法让它运行(当我求助于硬编码URI时,我可以让它工作)

我只是简单地重新编写了“com.github.fge.jsonschema.examples.Example1.java”以使用我的团队json模式和json文件。 我已经构建了这个项目,并将我的json模式文件复制到“json模式验证器\bin\com\github\fge\jsonschema\examples”中(都在同一个文件夹中,类似于fstab示例)

附在顶层的一部分

},
“移动窗口”:{
“说明”:“这是一个移动窗口度量吗?”,
“类型”:“布尔”
}
},
“迷你项目”:1,
“唯一项”:真
},
“RealTimeProfile”:{
“$ref”:“rtp.json”
}
},
“必需”:[
“MeasureTemplateId”,

“MeasureInstanceId”,
问题在于,您加载JSON,然后将其转换为模式。而您的模式在“id”中没有绝对URI。因此,它无法工作

您希望使用绝对URI来加载它们。由于您最初使用的是
文件
(注意,使用Java 7+时,您确实希望使用Java.nio.File),因此您可以通过以下方式获得该文件的绝对URI:

final File jsonSchemaFile = new File("main.json");
final URI uri = jsonSchemaFile.toURI();
然后使用以下内容加载架构:

final JsonSchema schema = factory.getJsonSchema(uri.toString());

我刚更改了我的参考资料 从…起 样式1:
“$ref”:“Booking.json”
到 样式2:
“$ref”:“资源:/booking架构/booking.json”


它对我很有效。可以使用
“$ref”:“Booking.json”
生成json到java pojo文件,但是当读取json有效负载时,style1失败了。我刚刚将其更改为STYLE2,在这两种情况下它对我都有效。

如果使用Maven,可以将id格式化为这样的
“id”:“resource:/path/to/this/file/in/your/maven/resources/folder/schemaName.json”;
请参见,但以这种方式加载它仍然需要架构中的“id”字段?