>_toolkitbox

~/tools / JSON Schema Validator

JSON Schema Validator — JSON を JSON Schema と照らして確認します

JSON データを JSON Schema と照らし合わせ、問題の場所と守られなかったルールを一つずつ表示します。Draft 2020-12 の主なキーワードに対応しています。AI モデルの構造化出力のチェックにも便利です。入力した内容はブラウザの外に出ません。

対応しているキーワードについては、JSON Schema Draft 2020-12 に従っています。$ref は、同じ schema の中だけを読み取ります。

すべてブラウザの中で処理します。schema もデータもアップロードされません。

JSON Schema は、有効な JSON がどのような形かを記述するものです。型、必須プロパティ、使える値や範囲などを定められます。このツールは、JSON を schema と照らし合わせ、データ内の場所と、守られなかった schema のキーワードを問題ごとに一覧にします。AI の API には、モデルの返答を schema に沿わせる機能がありますが、値が間違っていたり、返答が拒否されたり、途中で切れたりすることがあるため、自分で確認することをおすすめします。このツールが確認しないキーワード(format など)は、schema がそれを使っているときに一覧で示します。そのため、チェックに通っても、見た目より弱い確認で通っているということはありません。

こんな時に使う

  • AI モデルの構造化出力が、渡した schema に合っているか確認する
  • API で使う前に、有効なサンプルと無効なサンプルで schema を試す
  • 大きな JSON ドキュメントの中で、ルールに反しているプロパティを探す

使い方

  1. 左に schema、右に JSON データを貼り付けます。サンプルを読み込むこともできます。
  2. 結果を確認します。問題がなければ「合格」、問題があれば、データ内のパスと守られなかったルールの一覧が表示されます。
  3. 確認されなかったキーワードについての通知が出ている場合は、その内容を確認します。

schema が確認すること、確認しないこと

  • properties が確認するのは、存在するプロパティだけです。プロパティが必須になるのは、その名前が required に挙がっている場合だけなので、挙がっていないプロパティはなくてもかまいません。
  • additionalProperties は、properties にも patternProperties にも一致しない名前に適用されます。省略すると、余分なプロパティが許可されます。
  • integer は、小数部がゼロであるすべての数に一致します。
  • pattern は ECMA-262 の正規表現で、先頭や末尾に固定されません。パターン b は文字列 abc に一致します。文字列全体に一致させたいときは、^ と $ を付けてください。
  • minLength と maxLength は、RFC 8259 が定義する文字として数えるため、絵文字は 1 文字になります。
  • format は既定では注釈であり、確認するかどうかは任意です。このツールは確認せず、schema が使っているときはその旨を表示します。
  • 未知のキーワードは注釈として扱われるため、requierd のようにつづりを間違えたキーワードは無視され、schema は不合格になりません。

配列: 2020-12 とそれ以前のドラフト

ドラフト最初の要素の schema残りの要素の schema
2020-12prefixItemsitems
draft-07 以前配列としての itemsadditionalItems

このツールは、どちらの形も読み取ります。2020-12 では、items: false が additionalItems: false の代わりになります。

AI の構造化出力機能が受け付けるもの

各ベンダーが受け付けるのは JSON Schema の一部だけで、3 社それぞれ記述の仕方が異なります。

ベンダードキュメントの記述
OpenAIルートはオブジェクトでなければなりません。すべてのプロパティを required に挙げる必要があり(任意の値は、null も許す型として書きます)、すべてのオブジェクトに additionalProperties: false が必要です。allOf、not、dependentRequired、dependentSchemas、if/then/else には対応していません。
AnthropicadditionalProperties は false でなければなりません。再帰的な schema、minimum、maximum、multipleOf、minLength、maxLength、および 0 か 1 以外の配列の minItems には対応していません。対応していない機能を使うと、400 エラーが返ります。
Google Gemini対応しているのは JSON Schema の一部だけです。minLength、maxLength、minProperties、maxProperties、uniqueItems、contains、minContains、maxContains は、エラーにならず、取り除かれて無視されます。

この validator に合格した schema でも、ベンダーの機能に拒否されたり、一部しか適用されなかったりすることがあります。ベンダーのドキュメントを確認し、レスポンスは自分で検証してください。

レスポンスは自分で検証してください

  • Google は、出力が schema に合っていても、意味の上では間違っていることがあるとして、アプリケーションで値を検証するよう述べています。
  • Anthropic は、enum や const の値が、エラーなしに、大文字と小文字の違いだけで返ってくることがあると述べています。
  • OpenAI は、拒否(refusal)が schema に従うとは限らず、最大トークン数の制限で切れたレスポンスは不完全だと述べています。
  • Anthropic は、max_tokens で切れた返答は schema に合わないことがあると述べています。解析する前に、モデルがなぜ止まったかを確認してください。

出典(2026-10-23 確認): JSON Schema 2020-12: Core / JSON Schema 2020-12: Validation / JSON Schema 2020-12: Release notes / OpenAI: Structured Outputs / Anthropic: Structured outputs / Google AI for Developers: Structured output

FAQ

どの JSON Schema のバージョンに従っていますか?

Draft 2020-12 です。draft-07 の古い配列の書き方(items が配列で、残りを additionalItems が受け持つ形)も読み取れます。$ref は、同じ schema 内の定義($defs または definitions)を指すものに対応しており、外部の schema は取得しません。

どのキーワードを確認しますか?

type、enum、const、数値と文字列の上限・下限、pattern、配列のキーワード(items、prefixItems、minItems、maxItems、uniqueItems、contains)、オブジェクトのキーワード(properties、patternProperties、additionalProperties、required、propertyNames、dependentRequired など)、allOf、anyOf、oneOf、not、if/then/else を確認します。

何を確認しませんか?

format、unevaluatedProperties、unevaluatedItems、$dynamicRef、contentMediaType は確認しません。JSON Schema では format は既定で注釈(annotation)として扱われ、確認するかどうかは任意です。schema がこれらのいずれかを使っているときは、ツールがその旨を表示します。

キーワードのつづりを間違えても、エラーにならないのはなぜですか?

JSON Schema では、未知のキーワードは注釈として扱われます。そのため requierd のような打ち間違いは無視され、schema は合格のままになります。存在しない type のように、知っているキーワードに間違った値が書かれている場合は報告しますが、別の単語を意図していたことまでは判断できません。

ここで合格した schema は、AI ベンダーの構造化出力でも使えますか?

使えるとは限りません。各ベンダーが対応しているのは JSON Schema の一部だけです。OpenAI はすべてのプロパティを required にし、additionalProperties を false にすることを求めます。Anthropic は数値や文字列の長さの制限に対応しておらず、Gemini はいくつかのキーワードを無視します。ツールの下にあるベンダーごとの注意点をご覧ください。

データはサーバーに送られますか?

送られません。schema もデータも、ブラウザの中で確認されます。

Related