2012-01-22 4 views
9

Я имею дело с вводом данных в виде json-документов. Эти документы должны иметь определенный формат, если они не соответствуют требованиям, их следует игнорировать. В настоящее время я использую беспорядочный список «if thens», чтобы проверить формат json-документа.проверка структуры данных python с использованием Validator (или что-то подобное)

Я немного экспериментировал с различными библиотеками json-schem python, которые работают нормально, но я все еще могу представить документ с ключами, не описанными в схеме, что делает его бесполезным для меня.

Этот пример не генерирует исключение, хотя я ожидал:

#!/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) 

Мой вопрос имеет два аспекта:

  • ли я с видом что-то в определении схемы?
  • Если нет, есть ли еще один легкий способ приблизиться к этому?

Спасибо,

Jay

ответ

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

спасибо, я пропустил тот. Это то, что мне нужно. –

 Смежные вопросы

  • Нет связанных вопросов^_^