2017-06-16 6 views
0

python 2.7 jsonschema validateメソッドを使用してjsonSchemaに対する応答jsonを検証しています。Python jsonschema validateが期待どおりに動作しない

次のように私のjsonSchemaが辞書です:私はこのスキーマに対して検証しようとしています

schema = { 
    "type" : "object", 
    "properties" : { 
     "Country": {"type": "object", 
        "properties":{ 
         "State" : { "type" : "object", 
            "properties": { 
            "city": {"type": "object", 
                 "properties":{ 
                  "lat":{"type": "string"}, 
                  "long": {"type": "string"} 
                  } 
                 }, 
            "StateCode": {"type": "string"}, 
            "StateFlagColor111": {"type": "string"}, 
            "StateCapital": {"type": "string"} 
            } 
           } 
          } 
        } 
       } 
      }         

マイレスポンスJSONは、JSON Schemaに対してJSONデータを検証する

{ 
    "Country": { 
    "State": { 
    "City": { 
     "lat": "PP_4001", 
     "long": "Invalid GlobalParameters" 
    }, 
    "StateCode": "2017-06-16 18:15:14.442000", 
    "StateFlagColor": "400", 
"StateCapital": "ERROR" 
    } 
    } 
} 

Pythonのコードスニペットがあります

import jsonschema 
    from jsonschema import validate 

    try: 
     validate(responseDataJson, schema)    
     print 'good json' 
    except jsonschema.exceptions.ValidationError as ve: 
     print 'bad json' + str(ve) 

スキーマに表示されている場合、要素の名前はStateFlagCoです。 lor111であり、jsonデータの要素はstageFlagColorです。私はそのような検証のためにどのように例外をスローしないのか分かりません。それはいつも通ります。

それから、好奇心のせいで、この新しいスキーマに対して上記と同じjosnデータを検証しようとすると、私は非常に基本的なjsonSchemaを作成しました。

schema1 = { 
    "type": "object", 
    "properties":{ 
     "x1":{"type":"string"} 
     } 
    } 

jsondataもこの単純なスキーマに対して検証されています。

私はここで何が欠けているのか分かりません。この仕事をどうすればいいですか?

答えて

2

デフォルトでは、スキーマによって、明示的に指定されていない他のプロパティがオブジェクトに含まれます。これを無効にするには、トップレベルとサブオブジェクト(StateとCity)の両方に"additionalProperties": falseを追加する必要があります。

また、スキーマには必須のプロパティはありません。必要なものが必要な場合は、適切なレベルの配列requiredが必要です。

+0

ありがとうございます。これはあなたが提案したように働いた – Hary

関連する問題