10

私はjsonドキュメントの形式でデータ入力を扱っています。これらのドキュメントは特定の形式である必要があります。準拠していない場合は、無視する必要があります。私は現在、jsonドキュメントの形式をチェックするために「ifthens」の乱雑なリストを使用しています。

私はさまざまなpythonjson-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つあります:

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

ありがとう、

ジェイ

4

1 に答える 1

9

追加"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)
于 2012-01-22T13:16:51.267 に答える