2012-01-22 1 views
9

json 문서 형식의 데이터 입력을 처리하고 있습니다. 이 문서는 특정 형식이 있어야하며, 규격을 준수하지 않는 경우 무시해야합니다. 저는 현재 json 문서의 형식을 확인하기 위해 'if then'이라는 지저분한 목록을 사용하고 있습니다.Validator를 사용하여 파이썬 데이터 구조 유효성 검사 (또는 이와 비슷한)

나는 다른 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) 

내 질문은 두 가지이다 :

  • 나는 스키마 정의에 뭔가가 내려다 보이는 건가요?
  • 그렇지 않은 경우 여기에 접근 할 수있는 또 다른 간단한 방법이 있습니까?

감사합니다,

제이

답변

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

덕분에, 내가 한 것을를 놓쳤다. 그것은 내가 필요한 것입니다. –