0

JSONスキーマバリデータは、オブジェクトのサブオブジェクトがデフォルト値を持ち、親オブジェクトが存在しないケースをどのように処理する必要がありますか?JSONスキーマ検証内のサブオブジェクトのデフォルト値を処理する方法は?

は、次のスキーマ

次JSONに対して検証
{ 
    "type": "object", 
    "properties": { 
     "element": { 
      "type": "object", 
      "properties": { 
       "number" : { "type": "integer", "default": 15 } 
      } 
     } 
    } 
} 

を想像してみて:{}それは{}が得られています。

しかし、それは

{ 
    "element": { 
     "number": 15 
    } 
} 

になるべきではありません。

defaultキーワードをどのように解釈する必要がありますか?私は標準の対応する行を読んだが、彼らは私をさらに助けなかった。

+0

ここで問題が発生しました:https://github.com/json-schema-org/json-schema-スペック/ issues/200を参照してください。 –

答えて

1

インスタンスを検証する行為は、「有効」または「無効」のみを返します。 JSONスキーマの検証では、インスタンスが変更されることはありません。

「デフォルト」は、さまざまな人々に異なることを意味することができるかなり一般的なメタデータキーワードです。存在しないときに値を記入できるということを必ずしも意味するものではありません。最低でも、作成するときに初期値を取ることができます。

「タイトル」および「説明」と同様に、「デフォルト」キーワードは主にユーザーインターフェイスを対象としています。

+0

私の場合、デフォルト値が役に立つと思われます(設定ファイル)。また、デフォルト値がある場合は、欠落している要素を検証する必要があります。バリデーターはインスタンスを変更すべきではないとあなたはどこで読んでいますか? –

+0

バリデーターは、いくつかのルールに従ってインスタンスを変更するなど、追加の機能を持つことができます。しかし、検証は有効/無効を返さなければなりません(ほとんどのバリデータは修正されるべき問題のリストも返します)。 – awwright

0

いい質問..

しかしit.Youがデフォルトvalues.Seeのためにあなたにそれ

filterType: { 
      type: 'String', 
      required: true, 
      enum: ["Accounts", "portfolios"] 
     } 
のスナップショットを与えることができ、以下の例を列挙 キーワードを使用することができるため、簡単な解決策があります

フィールドにこれら2つの値のいずれかが含まれている必要があります。これはあなたのために機能すると思います...

+0

'required'(存在する場合)は、ドラフト4の仕様に従って配列でなければなりません。 http://json-schema.org/latest/json-schema-validation.html#rfc.section.5.15 –

+0

必須キーワードが使用されているため、jsonのフィールドを指定する必要があります。 ** requiredに設定されているフィールドに値を指定する必要があります。true ** – Trojan

+0

どのスキーマ仕様を参照していますか? –

関連する問題