java json模式验证相对路径不起作用(找不到URI)

多纳尔

我正在查看来自github的验证器代码的2.2.6版本。我没有从仓库“ https://github.com/fge/json-schema-validator.git ”中更改任何代码

当我对引用第二个模式文件的json模式进行测试时,无法运行示例1(当我诉诸于硬编码的URI时,它可以正常工作)。

我只是简单地指出了“ com.github.fge.jsonschema.examples.Example1.java”以使用我的团队的json模式和json文件。我已经构建了项目,并将json模式文件复制到“ json-schema-validator \ bin \ com \ github \ fge \ jsonschema \ examples”(全部位于同一文件夹中,类似于fstab示例)

附加了顶层的一部分,

               },
                "MovingWindow": {
                    "description": "Is this an moving window measure?",
                    "type": "boolean"
                }
            },
            "minItems": 1,
            "uniqueItems": true
        },
        "RealTimeProfile": {
            "$ref": "rtp.json#"
        }
    },
    "required": [
        "MeasureTemplateId",
        "MeasureInstanceId",

但我无法识别较低级别的第二个模式文件(“ rtp.json”),并且无法正常工作。我看到以下错误:

线程“ main” com.github.fge.jsonschema.core.exceptions.ProcessingException中的异常:致命:URI“ rtp.json#”不是绝对级别:“致命” uri:“ rtp.json#”

我的代码段:

File jsonFile = new File("CumulativeCountBad.json");
File jsonSchemaFile = new File("main.json");


JsonNode good = JsonLoader.fromFile(jsonFile);
JsonNode mainSchema = JsonLoader.fromFile(jsonSchemaFile);

final JsonSchemaFactory factory = JsonSchemaFactory.byDefault();

final JsonSchema schema = factory.getJsonSchema(mainSchema);

ProcessingReport report;

report = schema.validate(good);
System.out.println("good: " + report);

我的问题似乎与以下问题类似,但是当我将引用设置为“ $ ref”:“ rtp.json#”时,似乎无法让事情运行

https://github.com/fge/json-schema-validator/issues/94

任何帮助表示赞赏。PS-我是Java新手,如果有明显的遗漏,我深表歉意,谢谢

ge

问题是您加载JSON,然后将其转换为架构。而且您的架构在“ id”中没有绝对URI。因此,它不起作用。

您要使用绝对URI加载它们。由于您最初使用File(注意,在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());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档