、私はこのような複雑なJSONデータ構造を検証する必要があります。Pythonのjsonschema検証
datainstances = {"apache1" :{"user":1,"dirname":"apache1dir","blah":42},"apache2" :{"user":"apache2","dirname":"apache2dir"},"apache3" :{"user1":"apache2","dirname":"apache2dir"}}
だから私は
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"}
}
}
このスキーマに対してjsonschemaの検証機能を使用する私の目的は、それがいけないということですこのjson構造を次のように検証します。
- ユーザー属性は、文字列である必要があります。
- apache1の文字列も文字列でなければなりません
私は間違っていましたか? は、私はあなたのpatternProperties
エントリが正規表現 "^ [-Z] + $" を持っている
EDITコード
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)
コードを表示できますか?期待していなかったエラーやその他の結果はどうでしたか? – Phil
私はそれが妥当性検査に合格するようにします: –
ここではオンラインバリデーターを使用しています:https://www.jsonschemavalidator.net/もあなたのデータのバリデーションを示しています。あなたのコードは明らかに一貫しています。あなたのスキーマがなぜ検証されないのか分かりません。 – Phil