Ian Lewis
Ian Lewis is a web developer living in Tokyo Japan. His current interests are in Django, python, alternative databases and rapid web application development. About Me...
  • jsonschema ヴァリデーター 0.1a

    昨日、JSONSchema ヴァリデーターを漸くリリースしました。XML Schema と同じようなJSONSchemaは JSON文書の構造が正しいかどうかを検証するための文書。さらに、jsonschema ヴァリデーターはそのJSONSchema文書に従ってJSON文書が正しいかどうかを検証するPythonモジュール。JSON Schema Proposal Second Draftを基にしています。

    ソースコードはこちらからダウンロードできます:jsonschema-0.1a.tar.gz
    ドキュメンテーションはこちら: jsonschema (version 0.1a) documentation (日本語 README)

    JSONSchemaはJSON文書の構造を検証するために作られている。JSON文書の構造、データ形式を定義することが出来る。例えば、連絡先のデータがあるとしましょう。

    {
      "name": "Ian Lewis",
      "email": "IanLewis@xyz.com",
      "address": "123 Main St.",
      "phone": "080-1942-9494"
    }

    その文書をJSONSchemaで定義すると、以下のようのJSONSchemaが出る

    {
      "type":"object",
      "properties":{
        "name": {"type":"string"},
        "age": {"type":"int", "optional":True},
        "email": {
          "type":"string",
          "pattern":"^[A-Za-z0-9][A-Za-z0-9\.]*@([A-Za-z0-9]+\.)+[A-Za-z0-9]+$"
        },
        "address": {"type":"string"},
        "phone": {"type":"string"}
      }
    }

    さらに、以下の Python コードでこのJSON文書は当てるかどうかを検証するこどができる。

    import jsonschema, simplejson

    data = """{
      "name": "Ian Lewis",
      "email": "IanLewis@xyz.com",
      "address": "123 Main St.",
      "phone": "080-1942-9494"
    }"""

    schema = """{
      "type":"object",
      "properties":{
        "name": {"type":"string"},
        "age": {"type":"int", "optional":True},
        "email": {
          "type":"string",
          "pattern":"^[A-Za-z0-9][A-Za-z0-9\.]*@([A-Za-z0-9]+\.)+[A-Za-z0-9]+$"
        },
        "address": {"type":"string"},
        "phone": {"type":"string"}
      }
    }"""

    x = simplejson.loads(data)
    s = simplesjson.loads(schema)
    jsonschema.validate(x,s)

    JSONSchemaに拡張プロパティを付けることや、デフォルト検証処理を変更することができるので、とても柔軟なモジュールだと思っています (自分が作ったことについて言えるかなぁ ^^; ) 。 僕自身はGAEのプロジェクトで使うつもりだし、皆さんのご意見を是非聞かせてもらいたいと思います。:)

    Send feedback このエントリーを含むはてなブックマーク はてなブックマーク - jsonschema ヴァリデーター 0.1a