2016-06-27 5 views
0

ない:JSONスキーマ・バリデータは、アレイのすべての項目を検証するが、私は2つのスキーマの下に持っている唯一の最初の

A.json

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "type":"object", 
    "properties": 
    { 
     "ArgumentChoice":{ 
      "type" : "array", 
      "items" : {"$ref" : "B.json"} 
     } 
    } 
} 

B.json

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title" : "ArgumentChoiceType", 
    "type":"object", 
    "properties":{ 
     "ArgumentInt" : { 
      "type" : "object", 
      "properties":{ 
       "Value":{ 
        "type" : "integer" 
       } 
      } 
     }, 
     "ArgumentString" : { 
      "type" : "object", 
      "properties":{ 
       "Value":{ 
        "type" : "string" 
       } 
      } 
     } 
    } 
} 

以下は、A.jsonに対して検証されたjson要求です。

{ 
    "ArgumentChoice" : [ 
    { 
     "ArgumentInt" : { 
      "Value" : 1 
     } 
    }, 
    { 
     "ArgumentString" : 
     { 
      "Name" : "JOB_NAME", 
      "Value" : "test" 
     } 
    } 
    ] 
} 

私の問題は、文字列としてArgumentIntの値を渡すと、整数値を受け付けてレポートメッセージに表示されるため、失敗します。 しかし、私はArgumentStringの値を整数として渡すとまだ失敗しますが、間違ったタイプが入力されたために失敗したというメッセージは表示されません。 ArgumentStringの上にArgumentIntを置き、ArgumentStringに間違った値の型を入れると、ArgumentChoiceの最初の配列要素だけがスキーマに対して検証されていると推測されます。 何か間違っていますか?

答えて

1

オンラインでテストするために、A.jsonとB.jsonの組み合わせスキーマを作成しました。 2番目のケースについてもエラーメッセージが表示されます。

コンバインドスキーマ

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "type": "object", 
    "properties": { 
    "ArgumentChoice": { 
     "type": "array", 
     "items": { 
     "type": "object", 
     "properties": { 
      "ArgumentInt": { 
      "type": "object", 
      "properties": { 
       "Value": { 
       "type": "integer" 
       } 
      } 
      }, 
      "ArgumentString": { 
      "type": "object", 
      "properties": { 
       "Value": { 
       "type": "string" 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

あなたがより多くの質問がある場合は、私に教えてください

{ 
    "ArgumentChoice" : [ 
    { 
     "ArgumentInt" : { 
      "Value" : "test" 
     } 
    }, 
    { 
     "ArgumentString" : 
     { 
      "Name" : "JOB_NAME", 
      "Value" : 1 
     } 
    } 
    ] 
} 

enter image description here を使用する入力。

関連する問題