github のバリデータ コードの 2.2.6 バージョンを見ています。レポ「 https://github.com/fge/json-schema-validator.git」からコードを変更していません
2 番目のスキーマ ファイルを参照する json スキーマに対してテストすると、例 1 を実行できません (ハードコードされた URI に頼ると、動作させることができます)。
チームのjsonスキーマとjsonファイルを使用するために、「com.github.fge.jsonschema.examples.Example1.java」を単に再指定しました。プロジェクトをビルドし、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",
しかし、下位レベルの 2 番目のスキーマ ファイル ("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 の初心者です。省略したことが明らかな場合はお詫び申し上げます ありがとう