参照
スキーマとは何か?
XML スキーマ、RelaxNG、または ASN.1 を使用したことがある場合、スキーマが何かを既に知っている可能性があり、次のセクションに進んでいただいて構いません。それらがすべて分かりにくいように聞こえる場合は、正しい場所に来たということです。JSON スキーマとは何かを定義するには、まず JSON とは何であるかを定義する必要があります。
JSON は「JavaScript Object Notation」の略で、シンプルなデータ交換フォーマットです。それはワールドワイドウェブのための表記法として始まりました。JavaScript はほとんどのウェブブラウザに存在し、JSON は JavaScript をベースとしているため、そこでサポートするのは非常に簡単です。しかし、それは十分に便利でシンプルであることが証明されており、現在ではウェブサーフィンを含まない多くの他のコンテキストで使用されています。
本質的に、JSON は次のデータ構造に基づいて構築されています。
オブジェクト
配列
数値
文字列
ブール値
null
これらの型は、ほとんどのプログラミング言語に類似物があります。
これらの単純なデータ型を用いることで、あらゆる種類の構造化データを表現できます。しかし、この柔軟性ゆえに、同じ概念を無数の方法で表現できるという責任も伴います。例えば、JSONで人物に関する情報を表現する場合、様々な方法が考えられます。
どちらの表現も同様に有効ですが、明らかに片方がよりフォーマルです。レコードのデザインは、アプリケーション内での意図した用途に大きく依存するため、正しい答えも間違った答えもありません。しかし、アプリケーションが「人物のJSONレコードをください」と言った場合、そのレコードがどのように構成されるべきかを正確に理解することが重要です。例えば、どのようなフィールドが期待されているか、そして値がどのように表現されているかを知らなければなりません。そこで、JSON Schemaが登場します。次のJSON Schema断片は、上記の2番目の例がどのように構造化されているかを記述しています。現時点では詳細をあまり気にしないでください。それらは後続の章で説明します。
このスキーマに対して最初の例を「検証」すると、失敗することがわかります。
しかし、2番目の例はパスします。
JSONスキーマ自体がJSONで記述されていることに気づかれたかもしれません。それはデータそのものであり、コンピュータープログラムではありません。「他のデータの構造を記述する」ための宣言的な形式に過ぎません。これは、その強みであり、弱点でもあります(他の同様のスキーマ言語と共通しています)。データの表面構造を簡潔に記述し、それに対するデータの検証を自動化するのは容易です。しかし、JSONスキーマは任意のコードを含めることができないため、データ要素間の関係には表現できない制約があります。したがって、十分に複雑なデータ形式に対する「検証ツール」は、スキーマ(または構造)レベルとセマンティックレベルの2段階の検証を行う可能性が高いでしょう。後者のチェックは、より汎用的なプログラミング言語を使用して実装する必要があるでしょう。