2016-10-27 5 views
1

私はいくつかの要求タイプを持っています。 "add"、 "update"、 "delete"などの値を持つrequest-typeプロパティがあります。リクエストの種類に応じて必要なプロパティーが別のプロパティーの値に依存する場合のJsonスキーマ

、私は、異なる特性

要求タイプがために、「アドオンブルー」、そして私は、追加propertie「アドオン赤」を得るだろう、「foo」を「追加」をある場合

を取得します例

要求タイプは、「更新,,その後、 "更新-XXX"、 "更新-YYY"、 "更新-XXX"

とあれば "" し、 "foo" という、 "bar" を削除している場合。 ..

複数の追加のプロパティが複数のリクエストタイプに現れる可能性があることに注意してください(abovの "foo"例)

"request-type"の値に応じて、別の方法で検証したいと考えています。

私が「oneOfの」選択されることになるのどれを決定する際にバリデータが最初の値と一致することを期待して

"oneOf": [ 
    { 
    ... 
    "properties": { "request-type" : { "enum": ["add"] } 
        "add-red": { ...} 
       } 
    }, 
    { 
    ... 
    "properties": { "request-type" : { "enum": ["update"] } 
        "update-xxx": { ...} 
       } 
    } 

にしようとしました。

これは、VSコードバリデーターが有効なスキーマだと思うという点で「有効」と思われますが、私が望むことはしません - 対応するJSONを書くと、常に最初のものと一致しますその値として "add"だけを受け入れます)。

どうすればよいですか?私はここでJSON形式を定義することができますので、何とか検証できるものを使用する必要があります。

これはほぼ同じです:JSON schema anyOf validation based on one of properties私はそこの答えは、それぞれの要求の種類ごとに異なるプロパティの別個のセットを必要とすることを除いて。

編集:validation of json schema having oneOf keyword への回答によると、これは私のアプローチがうまくいくように見えるかもしれません。多分これはMS VSコードのintellisenseの単なる制限ですか?

EDIT2:私はいくつかのより多くの実験と多分これを削除終わる必要がありますwriting more complex json schemas that have dependencies upon other keys

:そして、これは別のアプローチを提供します!

+0

バリデータの制限のようです。ここであなたのスキーマを試してください:http://jsonschemalint.com/#/version/draft-05/markup/json – esp

+0

ありがとう。しかし、インテリセンススタイルの補完のためにスキーマを使用するエディタを使用すると便利です。助言がありますか? –

答えて

1

私自身の質問に答える - 問題のアプローチはうまくいきます。 http://www.jsonschemavalidator.net/のようなバリデータを使用して、私は期待した動作を得ます。

Visual Studioコードのインテリセンスは、役に立つガイダンスを提供できるという意味で解釈できません(公正ではあるが、 "oneOf"のすべての代替案に部分的にマッチすることは難しい問題ですどのようなものが依然として有効か確認するため)

関連する問題