1

親 json スキーマで子スキーマを参照したい。これは、child.json という名前の子スキーマです。

{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Child",
"description": "Child schema",
"type": "object",
"properties": {
    "name": {"type": "string"},
    "age": {"type": "integer"}
}}

ここにparent.jsonという名前の親スキーマがあり、2つのファイルはすべて同じフォルダーにあります。子スキーマを参照したいのですが、次のようにします:

{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Parent",
"description": "Parent schema",
"type": "object",
"properties": {
"allOf": [
    {
        "$ref": "file://child.json"
    }
],
"adresse": {"type": "string"}
}}

ファイル child.json が見つからないというエラーが発生しました。私は多くのことをテストしましたが、誰もが働いています。
ご協力いただきありがとうございます

4

3 に答える 3

2

問題の解決策を見つけました。ここに解決策があり
ますコンテキストは、親と子の 2 つのスキーマが常にあるということです。親は、次の例のように、プロパティの 1 つに子スキーマを含める必要があります。

"myChild": {
      "$ref": "child" //referencing to child schema
}

そして、彼の最初の子スキーマでは、次のようにIDを付ける必要があります

{
    "id": "child", //important thing not to forget
    "$schema": "http://json-schema.org/draft-04/schema#"
    //other codes goes here
}

jaySchema を使用した検証では、次のようにします。

var js = new JaySchema();
var childSchema = require('./child.json');
var parentSchema = require('./parent.json');

//other codes goes here
js.register(childSchema); //important thing not to forget
js.validate(req.body, schema, function(err) {
    if (err) //your codes for err
});

そしてそれはすべてです。:-D
これは私の解決策ですが、最善ではありません。回答ありがとうございます

于 2014-11-19T18:50:11.000 に答える
1

$ref値は URI 参照にすることができます。絶対 URI である必要はありません。したがって、ここでは、次を使用できるはずです。

{"$ref": "child.json"}

適切に解決する必要があります。

于 2014-11-14T13:08:53.233 に答える