jsonに限らないschema


Rubyには、yamlデータが期待した条件を満たしているかどうか検証する、
Kwalifyというライブラリがあります。


Rubyist Magazine - プログラマーのための YAML 入門 (検証編)



でも、KwalifyにはPython版は無いみたいなのです。

別にyamlを検証するライブラリがないか探していたら、ありました。



JSON Schema


JSON Schema is a specification for a JSON-based format for defining the structure of JSON data.



よし、YAMLからJSONに移ろう!


・・・と、思いましたが、よく考えるとJSON SchemaはJSON Schemaと言いつつYAMLにも使えます。


JSON SchemaはデータがJSONから読み込んだか、YAMLから読み込んだか、
miniconfから読み込んだかを、気にしないんです。
schemaもPythonで直接書けば、JSONゼロで使えるんです、JSON Schemaを。

    data = open("dw.yaml").read()
    obj = yaml.load(data)
    schema = {
        "type" : "object",
        "properties": {
            "folders": {
                "type" : "array",
            },
            "patterns": {"type":"array"},
            "html" : {"type": "string"},
            "css" : {
                "type": "string",
                "optional" : True,
                "default" : "dw.css",
            },
            "fit" : {"type": "string"},
            "html2bmp_cmdline" : {"type": "string"},
            "resize_cmdline" : {"type": "string"}
        }
    }
    jsonschema.validate(obj, schema)



これで、ConfigParserにはオサラバですね。