2017-08-23 22 views
1

スキーマが順番に他のスキーマを参照する '$ ref'パラメータを使用して、複数のスキーマを参照するJSONスキーマがあります。ネストされた参照を使用してJSONスキーマを検証する方法

たとえば、スキーマxyz.jsonがある

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "type": "object", 
    "allOf": [ 
    { 
     "$ref": "xyz.json" 
    } 
    ] 
} 

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "type": "object", 
    "properties": { 
    "id": { "type": "string", "title": "Identifier"}, 
    "Xid": { "type": "object", "$ref": "pqr.json", "title": "X Identifier"} 
    } 
} 

だけ 便宜上、私は1つのディレクトリにそれらすべてを配置してと呼ばれるライブラリを使用してスキーマを検証しようとしましたAjvしかし、スキーマをコンパイルするとエラーが発生します: can't resolve reference #/event.json from id

このようなJSONスキーマを検証するにはどうすればよいですか?私の目標は、すべてのスキーマ用に単一のJavaScriptオブジェクトモデルを作成することです。ありがとう。

答えて

0

私はAjvについてはわかりませんが、ドキュメントを見てみると、これは.addSchemaメソッドで達成可能と思われます。 (ブラウザではXMLHttpRequestをすることができ、ちょうど議論のためのNode.jsからfs.readFileSync)このように、すべての部分のスキーマを追加します。

var main = JSON.parse(fs.readFileSync('main.json')); 
var xyz = JSON.parse(fs.readFileSync('xyz.json')); 

var avj = new Avj(main); 

avj.addSchema(xyz, 'xyz'); 

とあなたが設定したIDを持つメインスキーマからそれを参照第二引数:私のexperiencから

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "id": "xyz", 
    ... 
} 

:あなたは複数の部分のスキーマを持っている場合は、プロパティとしてのIDを設定している場合

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "type": "object", 
    "allOf": [ 
    { 
     "$ref": "xyz#" 
    } 
    ] 
} 

が、あなたはまた、配列にそれらすべてを追加することができますeを他のライブラリ(古いjayschema)と一緒に使用している場合は、少なくとも参考用に(最後はハッシュ)を書く必要があります。

関連する問題