JSONからYAML SchemaのBoolean型とNull型を定義する
JSONのbooleanとnull値がYAML Schema型定義にどのようにマッピングされるかを学びます。booleanのデフォルト、nullable型、混合型のoneOf、YAML固有のtruthy/falsy落とし穴を解説します。
Type Mapping
詳細な説明
Boolean型とNull型のマッピング
JSONのtrue/false値はYAML Schemaでtype: booleanにマッピングされます。JSONのnullはnullable型を導入し、スキーマ定義で特別な処理が必要です。
Booleanプロパティ
{
"debug": true,
"enableCache": false,
"verbose": true
}
type: object
properties:
debug:
type: boolean
default: false
enableCache:
type: boolean
default: true
verbose:
type: boolean
default: false
Nullableプロパティ
JSONフィールドがnullの場合、スキーマは期待される型とともにnull型を許可する必要があります:
{
"name": "Alice",
"nickname": null,
"age": 30,
"bio": null
}
type: object
properties:
name:
type: string
nickname:
type:
- string
- "null"
age:
type: integer
bio:
type:
- string
- "null"
Draft 2020-12のNullable構文
JSON Schema draft 2020-12ではnullable型は配列構文を使用します:
nickname:
type: [string, "null"]
以前のドラフトではoneOfを使用します:
nickname:
oneOf:
- type: string
- type: "null"
YAMLのBoolean落とし穴
YAMLパーサーはいくつかの値をbooleanとして解釈します:yes、no、on、off、true、false。YAMLスキーマ定義では、パーサーが特殊な値として解釈するのを防ぐため、常に"null"を引用符で囲んでください:
# 正しい
type: [string, "null"]
# 危険 -- YAMLがnullを空として解析する可能性
type: [string, null]
説明付きBoolean
booleanフィールドに説明を追加するとスキーマの使いやすさが向上します:
debug:
type: boolean
default: false
description: >
デバッグモードを有効にします。trueの場合、アプリケーションは
詳細なリクエスト/レスポンスボディとスタックトレースをログに記録します。
Booleanと条件ロジックの組み合わせ
properties:
tls:
type: boolean
certPath:
type: string
if:
properties:
tls:
const: true
then:
required:
- certPath
このスキーマはtlsがtrueの場合のみcertPathを必須にし、booleanフラグに基づく条件付き検証を可能にします。
ユースケース
フィーチャーフラグ、デバッグトグル、オプションの設定フィールドはbooleanとnullable値を頻繁に使用します。booleanのデフォルトとnullable型を正しく処理するYAMLスキーマは、'yes'/'no'文字列が誤ってbooleanとして解釈されるというYAMLの一般的な落とし穴を防ぎます。これは設定バグの頻繁な原因です。