このツールの動作
YAML は JSON の上位集合なので、変換の大部分は淡々と進みます。マッピングはオブジェクトに、シーケンスは配列に、スカラーは文字列・数値・真偽値・null になります。
以下は、淡々と進まなくなる場所です。
長い識別子は桁を保つ
id: 12345678901234567890
{ "id": 12345678901234567890 }
平凡に見えますが、それが狙いです。JSON の数値は倍精度浮動小数点で、保持できるのはおよそ十五桁です。二十桁の識別子——Twitter のスノーフレーク、PostgreSQL の bigint——は、以前は黙って別の数値として返っていました。いまは桁を正確に読み、そのまま書き出します。
アンカーは展開される。JSON がそれを持てないから
defaults: &d
retries: 3
web:
<<: *d
は retries: 3 の複製二つになります。JSON には「同じ値が二か所にある」という概念がないため、共有はこの境界を越えられません。出力は入力より大きくなり、失われるものはありません。ただし関係は失われます。アンカーで組んだファイルを往復させる前に、知っておく価値があります。
複数の文書は配列になる
--- は文書を区切ります。JSON に区切りはないので、三つの文書からなる流れは三要素の配列になります。文書が一つなら包みません。オブジェクトがそのまま返ります。
null は三通り
~、null、そして空の値は、YAML ではいずれも null を意味し、三つとも null になります。JSON のほうが YAML より単純である数少ない箇所です。
この変換があなたの代わりに決められないこと
yes は文字列 "yes" として読みます。YAML 1.2 がそう定めているからです。YAML 1.1 を実装する PyYAML 向けに書かれたファイルなら、真偽値の真のつもりだったはずです。
どちらの版を念頭に書いたのかは、ファイルのどこにも書かれていません。YAML が Python の道具から来ていて、素の yes、no、on が重要なら、元の側で引用符を付けてください。曖昧さは変換器ではなくファイルの側にあります。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。