2012-01-22 23 views
9

Json belgeleri biçiminde veri girişi ile uğraşıyorum. Bu belgeler belirli bir biçime sahip olmalı, uyumlu değilse, göz ardı edilmeleri gerekir. Şu anda json belgesinin formatını kontrol etmek için 'onlardan' bir karışık listesi kullanıyorum.Python veri yapısı validator (veya benzer bir şey) kullanarak veri yapısı doğrulaması

Tamamen çalışan farklı python json şema kitaplıkları ile biraz deneme yapıyordum, ancak şemada açıklanmayan bir belgeyi sunabiliyorum, bu da bana yararsız oluyor. Bunu beklenebilir rağmen

Bu örnek bir istisna oluşturmaz:

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

sorum ikilidir:

  • Ben şema tanımında şey bakan muyum? Değilse, buna yaklaşmanın başka bir hafif yolu var mı?

sayesinde

Jay

cevap

8

"additionalProperties": False ekleyin:

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

teşekkürler, bir cevapsız. Bu sadece ihtiyacım olan şey. –