[英]Python jsonschema validation
在Python中,我需要像这样验证复杂的json数据结构:
datainstances = {"apache1" :{"user":1,"dirname":"apache1dir","blah":42},"apache2" :{"user":"apache2","dirname":"apache2dir"},"apache3" :{"user1":"apache2","dirname":"apache2dir"}}
所以我对这个模式使用jsonschema validate函数
schemainstances = {
"definitions" :{
"instance":{
"type":"object",
"properties": {
"user": {"type":"string"},
"dirname": {"type":"string"},
"blah": {"type":"string"}
},
"required" : ["user","blah"]
}
},
"type":"object",
"patternProperties": {
"^[a-z]+$": {"$ref": "#/definitions/instance"}
}
}
我的目的是它不应将此json结构验证为:
我做错了吗? 是我没看到的东西
编辑代码
import json
from jsonschema import validate
schemainstances = {
"definitions" :{
"instance":{
"type":"object",
"properties":{
"user": {"type":"string"},
"dirname": {"type":"string"},
"blah": {"type":"string"}
},
"required" : ["user","blah"]
}
},
"type":"object",
"patternProperties":{
"^[a-z]+$": {"$ref": "#/definitions/instance"}
}
}
datainstances = {"apache1" :{"user":1,"dirname":"apache1dir","blah":42},"apache2" :{"user":"apache2","dirname":"apache2dir"},"apache3" :{"user1":"apache2","dirname":"apache2dir"}}
retour = validate(datainstances,schemainstances)
print(retour)
您的patternProperties
条目具有正则表达式“ ^ [az] + $”。 关键是“ apache1”。 该密钥与您的正则表达式不匹配,因为它包含一个数字。 由于patternProperties
不匹配,因此对您的数据没有任何约束。 一切都会验证。 也许您想要“ ^ [a-z0-9] + $”或“ ^ [az] + [0-9] $”或“ ^ [az]”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.