2017-03-22 9 views
1

私のアプリケーションでは、私たちに返されたjsonが正確なフォーマットを検証することをテストする必要があります - 私のケースでは、ボディとヘッドブロックがあります。私は2つのJSONに対して与えられたjsonスキーマを検証し、両方とも有効です - 複数の "Head"または "Body"ノードを通過させない方法がありますか?jsonスキーマが複数の同じノードを許可しない

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "ValidResponse", 
    "type": "object", 
    "properties": { 
     "Head": { 
      "type": "object" 
     }, 
     "Body": { 
      "type": "object" 
     } 
    }, 
    "additionalProperties": false, 
    "required":["Head", "Body"] 
} 

このブロックは間違っていることを検証する必要があります。 ---

{ 
    "Body" : { 
    }, 
    "Head" : { 
    }, 
    "Head" : { 
    } 
} 

このブロックは正しいと検証する必要があります。 --- V

{ 
    "Body" : { 
    }, 
    "Head" : { 
    } 
} 

答えて

0

このブロックは有効ではありません...

{ 
    "Body" : { 
    }, 
    "Head" : { 
    }, 
    "Head" : { 
    } 
} 

あなたが使っているものは何でも、バリデータは、それが有効だと言う場合には、そのようなhttp://jsonlint.com/

としてバリデータを介して実行することができますバリデーターに問題があります。

+0

http://www.jsonschemavalidator.net/ ... [OK]を –

1

あなたの入力が有効なJSONではないことが問題なので、JSONパーサまたはlinterを使用して、スキーマチェッカーに渡す前にエラーを入力してください。

ほとんどのJSONパーサーは、重複しているHeadプロパティの1つを黙って無視します。いずれの場合でも、JSONスキーマチェッカーは、重複したプロパティを含む入力があることを決して知らないでしょう。

+0

それはむしろ「公式」と思われるように、このバリデータが働くと思ったので、JSON天気をJSONスキーマチェックが右JSON形式であるようにする方法はありませんそうでないと... JSONフォーマットそのものは、スキーマをチェックする前に正しいものでなければならない –

+0

はい、それはまだリンター付きのテキスト、またはこの種の検証を行うJSONパーサでJSON自体を検証する必要があります。任意)。 –

関連する問題