2012-01-22 8 views
9

私はjsonドキュメントの形式でデータ入力を扱っています。 これらのドキュメントは特定の形式を持つ必要があり、準拠していない場合は無視する必要があります。私は現在、jsonドキュメントのフォーマットをチェックするために 'if then'の乱雑なリストを使用しています。Validator(または類似のもの)を使用したPythonデータ構造の検証

私は、別のpython json-schemaライブラリを使って少しうまく実験していますが、これはうまくいきますが、まだスキーマに記述されていないキーを持つ文書を送信できます。私はそれを期待するだろうが

この例では、例外を生成しません:

#!/usr/bin/python 

from jsonschema import Validator 
checker = Validator() 
schema = { 
    "type" : "object", 
    "properties" : { 
     "source" : { 
      "type" : "object", 
      "properties" : { 
       "name" : {"type" : "string" } 
      } 
     } 
    } 
} 
data ={ 
    "source":{ 
     "name":"blah", 
     "bad_key":"This data is not allowed according to the schema." 
    } 
} 
checker.validate(data,schema) 

私の質問は2つあり:

  • は、私はスキーマ定義で何かを見下ろすのですか?
  • そうでない場合は、これにアプローチする別の軽量な方法がありますか?

おかげで、

ジェイ

答えて

8

"additionalProperties": Falseを追加します。

#!/usr/bin/python 

from jsonschema import Validator 
checker = Validator() 
schema = { 
    "type" : "object", 
    "properties" : { 
     "source" : { 
      "type" : "object", 
      "properties" : { 
       "name" : {"type" : "string" } 
      }, 
      "additionalProperties": False, # add this 
     } 
    } 
} 
data ={ 
    "source":{ 
     "name":"blah", 
     "bad_key":"This data is not allowed according to the schema." 
    } 
} 
checker.validate(data,schema) 
+0

おかげで、私はその1を逃しました。それは私が必要なものです。 –