JSON Schemaの仕様を読んだ
自分でまとめると理解が進むと誰かが言っていたので自分なりにまとめる. 読んだのはJSON Scheme Coreの部分.
Instance
JSON SchemaではデータモデルをInstanceと呼ばれるもので表す.Instanceには以下の6つの基本型を持つ.
- null
- boolean
- object
- array
- number
- string
基本的にはJSと同じ.データの型という理解で問題ない気がする.
root schemaとsubschemas
名前から想像できる通り,root schemaはトップレベルのschema,subschemasはroot schemaにネストされたschemaである.
JSON Schemaの拡張
新たにmeta-schemasを作って拡張したいときは"$schema"キーワードを使う.
“$schema"キーワード
“$schema"の値にはJSON schemaのどのバージョンを使うかを示す正規化したURIを記述する. ”$schema"はroot schemaに記述する.
“$ref"キーワード
“$ref"キーワードはschemaの参照に使われる. また,自身を参照することで再帰的な構造を記述することも可能.(ただし,無限ループを作ってはならない) オブジェクトのプロパティに”$ref"がある場合は"$ref"の参照であると解釈する. このときの"$ref"の値はURIである. 以下は理解できなかったのでそのまま持ってきた.
All other properties in a “$ref” object MUST be ignored.
“$id"キーワード
schemaのURIを定義するもの.
root schemaに"$id"プロパティを入れるのが行儀がいい.このときの値は一意に定まるようなもの( e.g. "http://example.com/root.json"
)にする.
subschemasには相対的に定まるもの(e.g. #foo
と指定した時はhttp://example.com/root.json#foo
と解決される.)を"$id"プロパティの値に入れる.
他の例はJSON Schema: A Media Type for Describing JSON Documentsを見て.
内部参照
“$id"キーワードと”$ref"キーワードを使うことで内部参照ができる.例は JSON Schema: A Media Type for Describing JSON Documents を見て.
JSON schemaで使えるキーワード
以下をみればよい.