Introduction to JavaScript Object Notation: A To-the-Point Guide to JSON (English Edition)
目次
- 目次
- はじめに
- JSON Schemaとは?
- JSONファイルからJSON Schemaを生成する
- JSON SchemaでJSONをvalidateする
- JSON Schemaからドキュメントを生成する
- JSON SchemaからJSON解釈用コードを生成する
- 参考資料
- MyEnigma Supporters
はじめに
最近、
構造化されたデータや、
設定ファイルなどにJSONを使うことが多くなってきました。
しかし、JSONは
あまりにもフレキシビリティが高いデータフォーマットなので、
意図しない構造のJSONファイルを受け取ってしまうことがあります。
そのようなときに、JSONの構造やデータの中身が意図したものになっているのか、
確認する手法が必要です。
そこで、JSONファイルの構造やデータの中身を定義したものを、
JSON Schemaと呼びます。
今回の記事では、JSON初心者のために、
JSON Schemaを利用するのに必要最低限の方法を紹介したいと思います。
JSON Schemaとは?
前述の通り、JSON Schemaは、
JSONの構造を定義したものです。
また、JSON SchemaはJSONの構造を、
JSONファイルとして定義します。
例えば、下記のようなJSONファイルがあったとします。
json_schema_sample/sample.json at master · AtsushiSakai/json_schema_sample · GitHub
このJSONファイルのJSON schemaは、
下記のようになります。
json_schema_sample/json.schema at master · AtsushiSakai/json_schema_sample · GitHub
JSON schemaでは、
フィールドの型(文字列や数値、配列など)を定義したり、
必ず必要なフィールドを指定したり、
フィールドの配列の個数や、
フィールドの数値の範囲なども定義することができます。
またpatternのタグを使うことで、正規表現を使って、
JSONのフィールドが定義を満たしているかを確認することができます。
使用できるタグに関しては、下記を参照してください。
このJSON Schemaを使うことで、
JSONファイルが正しい構造になっているのかを
自動的に確認(Validate)したり、
JSONデータのドキュメントを生成したりすることができます。
JSONファイルからJSON Schemaを生成する
すでに、Schemaの元となるJSONファイルが手元にある場合は、
そのJSONファイルから、JSON Schemaを生成できると便利です。
下記のWebツールは、
ブラウザからJSONデータを元に、
JSON Schemaを生成することができます。
また、CLIのツールとしては、
下記のPythonライブラリを使うことで、
JSON schemaを生成することも可能です。
(メンテされていないように見えますが。。)
JSON SchemaでJSONをvalidateする
JSON schemaのデータ構造を元に、
JSONデータのチェックをするのが、
JSON schemaのメインの用途です。
JSON schemaによるJSONのvalidateするツールは色々ありますが、
代表的なものとしては、
下記のようなPython製のライブラリがあります。
下記のコードは、
実際にJSONファイルとJSON schemaファイルを読み込んで、
jsonschemaでvalidateするサンプルコードです。
""" json schema validate sample author: Atsushi Sakai """ from jsonschema import validate import json def main(): print("start!!") f = open("sample.json") jsond = json.load(f) f.close() print("JSON data:") print(jsond) f = open("json.schema") schema = json.load(f) f.close() print("JSON schema:") print(schema) # OK validate(instance=jsond, schema=schema) # NG validate(instance={"name" : "Eggs", "price" : 34.99}, schema=schema) print("done!!") if __name__ == '__main__': main()
一つ目のvalidate関数は、
schema通りのJSONなので、何も起きませんが、
二つ目のvalidate関数は、
schemaで指定した形式のJSONではないので、
例外が発生します。
このように、JSON Schemaを使って、
JSONの構造を確認することができます。
JSON Schemaからドキュメントを生成する
JSON Schemaは、JSONの構造を定義したものですが、
JSON SchemaはJSONで定義されることが多いので、
人間が読むには厳しい時があります。
そこで、JSON Schemaのファイルから、
自動的に人間が読みやすいドキュメントを生成するツールがあります。
例えば、下記のbootprintは
javascript(node.js)のツールですが、
コマンドラインから、json schemaファイルを指定すると、
下記のように、自動的にhtmlベースのドキュメントを生成してくれます。
JSON SchemaからJSON解釈用コードを生成する
JSON Schemaから、
JSON解釈用のコードを自動生成することもできます。
例えば、下記のWebツールを使うと、
JSON Schemaから、
下記の言語のJSON解釈用のコードを自動生成することができます。
参考資料
Introduction to JavaScript Object Notation: A To-the-Point Guide to JSON (English Edition)
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。