3

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 の初心者です。省略したことが明らかな場合はお詫び申し上げます ありがとう

4

3 に答える 3