2016-09-01 7 views
0

私はこのスキーマを持っていますが、私は、以下のdataRecordプロパティに「any」スキーマが1つしかないと予想しています。私はまた、dataRecordプロパティがスキーマを保持するだけであることを期待しています。現時点では、dataRecordプロパティで参照する2つのサブスキーマしかありません。将来、test2、test3などのように追加するスキーマが増えると予想しています。私は、以下のスキーマを編集して、$ refをdataRecordプロパティに追加しないようにしたいと思います。これを実現する方法は、dataRecordプロパティへの参照を追加することなく、同時に1つのスキーマが常に提供されるようにすることです。どんな助けもありがとう。それはあなたが望むものの一種のように聞こえる任意のタイプのスキーマを受け入れる方法

{ 
"id": "http://anysiteaddress", 
"type": "object", 
"properties": { 
"recordId": { 
    "type": "string" 
}, 
"dbOperationType": { 
    "type": "string" 
}, 
"schema": { 
    "type": "string" 
}, 
"schemaVersion": { 
    "type": "string" 
}, 
"utcTimeStamp": { 
    "type": "string" 
}, 
"dataRecord": { 
    "oneOf" : [ 
    { "$ref": "test.json#/definitions/test"}, 
    { "$ref": "test1.json#/definitions/test1"} 
    ] 
} 
}, 
"additionalProperties": false, 
"required": [ 
"recordId", 
"dbOperationType", 
"schema", 
"schemaVersion", 
"utcTimeStamp", 
"dataRecord" 
] 
} 

答えて

0

は、ディレクトリを参照できるようにすることであるとoneOfは、そのディレクトリで見つかった各スキーマが含まれています。これはJSONスキーマではできません。新しいスキーマを追加するには、何かを変更する必要があります。

dataRecordの追加のスキーマを作成し、そのスキーマに新しいスキーマを参照させることができます。新しいスキーマを追加するときにスキーマを変更する必要はありませんが、代わりにdataRecordスキーマを変更する必要があります。

他の選択肢として、スキーマのこの部分をコードで生成してから提供する方法があります。このスキーマをどのように使用するかによって、これは良い選択肢になるかもしれません。

+0

ディレクトリを参照するために言及した最初のアプローチです。私はそれを行う方法がわかりません、あなたはいくつかの例を提供できますか? –

+0

私はオプションとしてそれを提示しませんでした。 JSON Schemaでできることではないと私は言った。ごめんなさい。 – Jason

関連する問題