JSON Schema 入門: SQL 制約のように JSON 構造を検証する

2024-04-13

JSON が parse できても、必須項目不足や型違いは起こります。JSON Schema はその「構造の正しさ」を明示的にチェックするための仕様です。

最小構成 Schema

ルート型を object/array で定義し、properties と required で必須項目を明示します。

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "required": ["id", "name"],
  "properties": {
    "id": { "type": "integer" },
    "name": { "type": "string", "minLength": 1 }
  }
}

よく使うキーワード

type、enum、items、additionalProperties: false、oneOf、$ref が中核です。

コード実装

JavaScript は ajv、Python は jsonschema、Go は gojsonschema が代表です。

OpenAPI のボディ定義は JSON Schema のサブセットとして運用されます。

構文検証との違い

JSON.parse は文法、Schema は契約。順番を分けると障害切り分けが速くなります。

チーム展開

Schema をリポジトリ管理し、CI で fixture 検証を回す運用が安定します。