Skip to content
JSON Schema Validator
Tools

JSON Schema Validator

新着

Validate JSON against a JSON Schema (draft-07 / draft-2020-12) with clear error messages.

JSON Data Paste your data here
JSON Schema Draft-07 supported

Runs entirely in your browser. Nothing is uploaded.

JSON Schemaとは何か、なぜ重要なのか?

JSON(JavaScript Object Notation)はWeb API、設定ファイル、データ交換の共通言語です。しかし、生のJSONには組み込みの型システムがありません — フィールドがある日は文字列で、翌日は数値になることがあり、その不一致を発見する唯一の方法は実行時のクラッシュや微妙なデータバグです。JSON Schemaはこのギャップを埋めます:JSONドキュメントの期待される構造と制約を記述するための宣言的ボキャブラリーで、実行時に実際のデータに対して検証されます。

チームはJSON Schemaを使用して、処理前にAPIリクエストのペイロードを検証し、起動時にロードされる設定ファイルの形式を強制し、単一の信頼できるソースからドキュメントとUIフォームを自動生成し、マイクロサービス全体でコントラクトの一貫性を維持します。OpenAPI — REST APIドキュメントの標準 — はJSON Schemaの直上に構築されており、Webで最も広く展開されているデータ検証標準となっています。

JSON Schema ドラフトバージョン:Draft-07、Draft 2019-09、Draft 2020-12

JSON Schemaはいくつかの仕様ドラフトを経てきました。2018年にリリースされたDraft-07は、すべての主要バリデーターライブラリで最も広くサポートされており、OpenAPI 3.0が使用するダイアレクトです。強力なif/then/else条件付き検証キーワード、readOnly/writeOnlyプロパティアノテーション、コンテンツエンコーディングキーワードが導入されました。今日スキーマを書いていて最新機能が不要であれば、Draft-07がエコシステムの互換性を最大化するための最も安全な選択です。

Draft 2020-12は現在の安定した仕様で、いくつかの重要な変更を導入しています:タプル検証でitemsキーワードがprefixItemsに置き換えられ、動的参照は$recursiveRefの代わりに$dynamicRefを使用し、新しいunevaluatedPropertiesとunevaluatedItemsキーワードが追加コンテンツをより精密に制御します。

JSON Schemaの主要キーワード解説

typeキーワードはデータ型を強制します:string、number、integer、boolean、array、object、またはnull。requiredはオブジェクトに存在しなければならないプロパティをリストします。propertiesは各プロパティ名を独自のサブスキーマにマッピングします。patternは文字列値に正規表現を適用します。minimummaximumminLengthmaxLengthは数値および文字列の範囲を制約します。enumは値を許可された値の固定セットに制限し、constは単一の値に制限します。

コンポジションキーワードを使用すると、シンプルなビルディングブロックから複雑なルールを構築できます:allOfは論理AND、anyOfはOR、oneOfはXORとして機能します。notキーワードはスキーマを反転させます。if/then/elseキーワードは条件付き検証を可能にします。これらを組み合わせることで、カスタムの命令型コードを書くことなく、ほぼあらゆる検証ルールを表現できます。

本番環境でのJSON Schema:APIコントラクトとCIパイプライン

本番システムでは、JSON Schema検証はAjv(JavaScript/Node.js)、jsonschema(Python)、またはNewtonsoft.Json(C#)などのライブラリを使用してサーバーサイドまたはCIパイプラインで実行されます。スキーマはアプリケーションコードとともにバージョン管理にコミットされ、コントラクトの変更が他の変更と同様にレビュー・追跡されます。必須フィールドの削除や型の制限など破壊的変更は、コードレビュー時に検出され、本番環境に到達してコンシューマーを壊す前に防ぎます。

このブラウザベースのツールは、コミット前にスキーマを繰り返し設計・デバッグするのに最適です。データを貼り付け、スキーマを書き、検証をクリックし、詳細なエラーメッセージを読んで改善する — サーバー不要、npm installなし、往復なし。バリデーターは検証実行ごとにJSONをきれいに整形するため、便利なJSONフォーマッターとスキーマテスターの組み合わせとなります。

実践例:APIレスポンスの検証

APIがユーザーオブジェクトを返すとします。それを検証するJSON Schemaは、整数のid、空でない文字列のname、メールパターンに一致する文字列のemail、そして'admin'、'editor'、'viewer'のenumからのオプションの文字列roleを要求するかもしれません。additionalPropertiesをfalseに設定することで、APIが下流のコンシューマーが意図せず依存するかもしれない未文書化のフィールドを静かに返すことを防ぎます。

if/then/else機能は条件付きルールを可能にします — 例えば、roleが'admin'であればpermissions配列が必須、そうでなければ禁止。これらのコンポジションルールにより、プロパティ定義を複製することなく、単一のスキーマがオブジェクトの複数の有効な形状をカバーできます。

UtiloKitと他のJSON Schemaバリデーターの比較

ほとんどのオンラインJSON Schemaバリデーターツールは2つのカテゴリに分類されます:ビジュアルスキーマビルダーとサーバーサイドAPIバリデーター。jsonschema.netはスキーマを構築するためにポイントアンドクリックのUIを通じることを強制します — スキーマ構造を学ぶ初心者には役立ちますが、必要なキーワードを既に知っていて書いたスキーマを素早くテストしたい開発者には遅すぎます。

MicrosoftのNewtonsoft.Jsonライブラリ上に構築されたjsonschemavalidator.netは、JavaScriptの開発者には馴染みのない.NETプロパティパスとエラーコードを使用してエラーを報告します。StoplightSwaggerHubなどのツールは、完全なOpenAPIドキュメントの一部としてスキーマを検証し、プロジェクトのセットアップとアカウントが必要です。

UtiloKitのバリデーターは、ほとんどのNode.js、Express、Fastifyアプリケーションを動かしているのと同じAjvエンジン上で実行されます。エラーメッセージ、JSONポインターパス、キーワードの動作は本番環境と完全に一致します — アカウント、アップロード、ファイルサイズ制限、日次使用制限なしでブラウザで無料で実行されます。

Frequently asked questions

JSON Schemaとは何ですか?

JSON SchemaはJSONドキュメントをアノテーションし検証するための宣言的ボキャブラリーです。JSONドキュメントが満たすべき期待される構造、データ型、制約を定義します。チームはAPIペイロードの検証、設定ファイル構造の強制、ドキュメントとUIフォームの自動生成、マイクロサービス間のデータ一貫性の確保に使用します。OpenAPI 3.0と3.1の両方がJSON Schemaの上に構築されています。

このバリデーターはどのJSON Schemaドラフトをサポートしていますか?

このバリデーターはJSON Schema Draft-07のコアキーワードを実装しています。これはAjv(JavaScript)、jsonschema(Python)、Newtonsoft.Json(C#)を含むすべての主要バリデーターライブラリで最も広くサポートされているバージョンです。Draft-07はif/then/else条件付き検証、readOnly/writeOnlyアノテーション、コンテンツエンコーディングキーワードを導入しました。

allOf、anyOf、oneOfの違いは何ですか?

allOfはデータがリストされたすべてのサブスキーマに対して有効であることを要求します — 論理ANDとして機能します。anyOfは少なくとも1つのサブスキーマに対する有効性を要求します — 論理OR。oneOfは厳密に1つのサブスキーマに対する有効性を要求します — 論理XOR。これらのコンポジションキーワードにより、シンプルで再利用可能なパーツから複雑な検証ルールを構築できます。

additionalProperties: falseは何をしますか?

propertiesキーワードの下に明示的にリストされていないオブジェクト内のすべてのプロパティを禁止します。これにより閉じたスキーマが作成されます — 予期しないフィールドが検証失敗を引き起こすべき厳密なAPIコントラクトに非常に役立ちます。スキーマを更新せずにデータに新しいプロパティを追加すると、additionalPropertiesが正しく設定されるまで検証が失敗します。

オブジェクトの配列を検証できますか?

はい。typeを'array'に設定し、itemsサブスキーマを提供します。配列内のすべての要素がそのサブスキーマに対して検証されます。タプル検証の場合、Draft-07ではitemsをスキーマの配列に設定します。minItems、maxItemsで配列の長さを制約し、uniqueItems: trueで一意性を強制することもできます。

$refでサブスキーマを参照するにはどうすればよいですか?

トップレベルの$defs オブジェクトに再利用可能なスキーマを定義し、'$ref': '#/$defs/SchemaName'で参照します。これによりスキーマがDRYで読みやすく保たれます。このバリデーターはローカル(同一ドキュメント)の$refのみをサポートしています — 外部ファイルを指すリモート$ref URLは取得されません。

最も一般的なJSON Schema検証エラーは何ですか?

最も一般的なエラーは:必須プロパティの欠如、型の不一致、patternの違反、範囲の違反、additionalPropertiesがfalseのときの追加プロパティエラーです。このバリデーターは各エラーを、失敗したデータへの正確なJSONポインターパスとともに報告します。