YAMLとJSONの変換では外観よりデータを守る
YAMLの設定をサービスとの交換用にJSONへ変えることがあります。構造が似ていても、元のファイルのすべてに対応する表現があるとは限りません。
見た目より値の型が重要
文字列"003"は数値3ではなく、引用符付きの"false"は真偽値falseではありません。先頭の0や正確な表記に意味がある識別子は文字列にします。
この変換はJSONに対応できるYAML 1.2 Coreのデータを扱います。古いシステムの解釈をそのまま持ち込まないでください。同じ単語でも版により読まれ方が変わります。
コメントは保守する人への説明
YAMLのコメントは管理に役立ちますがデータの一部ではありません。ここではJSONに引き継がれず、YAMLへ戻しても再出現しません。
注釈付きの元ファイルを残し、変換結果はデータ出力と考えます。構文の色や見慣れた順序だけでは型の維持を確認できません。
非対応の拒否は無言の欠落を防ぐ
扱うのは文字列キーを持つ1文書です。キーの重複、エイリアス、アンカー、独自タグ、対応するデータ表現以外の機能は拒否します。
表現可能範囲を超える数値は黙って丸めず拒否します。長い識別子には文字列を使います。設定の実行や受け取り側の受理を証明するものではありません。
例:意図的に異なる3つの型
code: "003"、enabled: false、retries: 3は、文字列"003"、真偽値false、数値3になります。0が残るのは識別子と推測したからではなく、文字列だからです。
前に# stagingを加えてもJSONの項目は増えません。YAMLへ戻すと引用符や書式が変わっても値と型は同じに保てますが、元のコメントは復元されません。