参照

基本

スキーマとは?」では、スキーマとは何かを説明し、スキーマ言語の必要性を説明しました。ここでは、簡単な JSON スキーマの作成に進みます。

Hello, World!

新しい言語を学ぶ際には、可能な限り最も簡単なものから始めることが役立つことがよくあります。JSON スキーマでは、空のオブジェクトは完全に有効なスキーマであり、有効な JSON をすべて受け入れます。

スキーマ
{}

これは、有効な JSON であれば何でも受け入れます。

データ
42
スキーマに準拠
データ
"I'm a string"
スキーマに準拠
データ
{ "an": [ "arbitrarily", "nested" ], "data": "structure" }
スキーマに準拠
draft 6 の新機能

空のオブジェクトの代わりにtrueを使用して、何でも一致するスキーマを表すこともできます。または、何も一致しないスキーマにはfalseを使用することもできます。

これは、有効な JSON であれば何でも受け入れます。

スキーマ
true
データ
42
スキーマに準拠
データ
"I'm a string"
スキーマに準拠
データ
{ "an": [ "arbitrarily", "nested" ], "data": "structure" }
スキーマに準拠

このスキーマのドキュメントは常に無効になります。

スキーマ
false
データ
"Resistance is futile... This will always fail!!!"
スキーマに準拠していません

type キーワード

もちろん、任意の JSON ドキュメントを受け入れるだけのために JSON スキーマを使用するわけではありません。JSON スキーマで最も一般的なのは、特定の型に制限することです。type キーワードはそのため使用されます。

この本で JSON スキーマの「キーワード」を参照する場合は、オブジェクト内のキー/値ペアの「キー」部分を意味します。JSON スキーマの作成作業のほとんどは、特別な「キーワード」をオブジェクト内の値にマッピングすることに関係しています。

たとえば、次の例では、文字列のみが受け入れられます。

スキーマ
{ "type": "string" }
データ
"I'm a string"
スキーマに準拠
データ
42
スキーマに準拠していません

typeキーワードについては、こちらで詳しく説明しています。

JSON スキーマの宣言

JSON スキーマがどのドラフトを使用しているかを判断するのは必ずしも容易ではありません。$schemaキーワードを使用して、スキーマが記述されているJSON スキーマ仕様のバージョンを宣言できます。$schema を参照してください。必須ではありませんが、一般的に含めることが推奨されます。

簡潔にするため、本書のほとんどの例には$schemaキーワードは含まれていませんが、実際の運用では常に使用する必要があります。

スキーマ
{ "$schema": "https://json-schema.dokyumento.jp/draft/2020-12/schema" }
ドラフト固有の情報
ドラフト4では、$schemaの値がhttps://json-schema.dokyumento.jp/schema#である場合、最新のJSON スキーマバージョンを参照していました。この使い方は非推奨となり、特定のバージョンのURIを使用する必要があります。

一意の識別子の宣言

draft 6 の新機能

各スキーマの一意の識別子として$idプロパティを含めることもベストプラクティスです。現時点では、制御するドメインのURLに設定します(例:)

スキーマ
{ "$id": "http://yourdomain.com/schemas/myschema.json" }

$idの詳細については、複雑なスキーマの構造化を開始するとより明確になります。

ドラフト固有の情報
ドラフト4では、$idは単にid(ドル記号なし)です。

ヘルプが必要ですか?

このドキュメントは役に立ちましたか?

ドキュメントの改善にご協力ください!

JSON スキーマでは、ドキュメントへの貢献を他のあらゆる種類の貢献と同様に高く評価しています!

それでもヘルプが必要ですか?

JSON スキーマの学習はしばしば混乱を招きますが、ご心配なく、お手伝いさせていただきます!