JSON Schema生成におけるboolean型とnull型

JSON Schemaがboolean型とnull型をどのように表現するかを理解し、堅牢なAPIバリデーションのためにnullable フィールドを使用するタイミングを学びます。

Basic Types

詳細な説明

生成されたスキーマにおけるbooleanとnullの扱い

booleanとnullは最もシンプルなJSON型ですが、ほぼすべての実世界のスキーマに登場します。ジェネレーターがこれらをどのように処理するか、いつ調整が必要かを理解することが重要です。

booleanの生成

ジェネレーターが true または false を検出すると、次を出力します:

{ "isActive": { "type": "boolean" } }

これはリテラルのJSON値 truefalse のみを受け入れます。文字列の "true""false"、数値の 01 はバリデーションに失敗します。

nullの生成

サンプルの null 値は次を生成します:

{ "deletedAt": { "type": "null" } }

しかし、null のみの型を持つフィールドは実用的ではありません。通常必要なのは nullable フィールド(主要な型またはnullを受け入れるフィールド)です。

フィールドをnullableにする

JSON Schemaはnullableフィールドに2つのアプローチをサポートしています:

型配列(Draft 2020-12で推奨):

{
  "deletedAt": {
    "type": ["string", "null"],
    "format": "date-time"
  }
}

anyOf を使用:

{
  "deletedAt": {
    "anyOf": [
      { "type": "string", "format": "date-time" },
      { "type": "null" }
    ]
  }
}

ベストプラクティス

  • フィールドが本当に値を持つべきでない場合を除き、type: "null" 単独での使用は避けてください。
  • 明確性のために型配列構文を推奨します: ["string", "null"]
  • null がいつ期待されるかを消費者が分かるように、nullableフィールドに description でドキュメントを追加してください。

ユースケース

機能フラグ、ソフトデリートのタイムスタンプ、オプトイントグル、および意味のある値と明示的な値の不在の間でトグルするAPIフィールドにboolean型とnull型を使用します。

試してみる — JSON Schema Generator

フルツールを開く