昨日、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のプロジェクトで使うつもりだし、皆さんのご意見を是非聞かせてもらいたいと思います。![]()
