このページのコードが起動しませんでした。

index.htmlをフォルダから直接開くと、ブラウザがJavaScriptモジュールを読み込めません。そのためファイルを選んでも何も起きません。フォルダはhttpで配信してください。

powershell -ExecutionPolicy Bypass -File serve.ps1

そのうえでhttp://localhost:8080/を開いてください。

YAMLをJSONに — そしてJSONをYAMLに戻す

双方向で、それぞれの代償も伝えます。どちらも、よそのサーバーに貼り付けられることはありません。

言語: 日本語
ソースを見る
YAMLとJSONはブラウザー内で処理されます。処理のためのアップロードはありません。

変換は文字列に対する計算で、それをここ、このページで行います。二つのパーサーはどちらも手書きでsrc/にあります。shared/parse-yaml.jsとshared/parse-json.jsで、それ以上のものはありません。この道具にはネットワーク機能そのものがなく、取りに行くものも送るものもありません。それはこのサイトのほぼどこよりも重い意味を持ちます。YAMLファイルはたいてい配備の設定であり、配備の設定はたいていホスト名とバケット名と秘密でいっぱいだからです。

いまの通信: 確認中…

オフライン: 確認中…

言葉を信じる必要はありません。DevToolsを開き、ネットワークタブを見ながら何かを変換してみてください。どのリクエストにも、貼り付けた内容の1文字も乗っていません。あるいはインターネットを切って、それでも変換してみてください。

1 向きを選ぶ

字下げ タブはJSONのときだけ選べます。YAMLは半角空白で定義されていて、タブは正しいインデントになりません。

すべてのオブジェクトのキーを並べ替える コードポイント順ではなく、キーの読み方の順です。ですからitem2がitem10より前に来ます。

2 貼り付ける

空

3 結果を持ち出す

まだ何もありません。

 

Markdownで表示

YAMLをアップロードせずにJSONへ変換する手順

  1. 向きを選びます。YAMLからJSONへか、JSONからYAMLへ。メニューの下の注記が、その向きで何が失われるかを、何かを貼り付ける前に伝えます。あとからではありません。
  2. 貼り付けるか、ファイルを置きます。選択してコピーできるものなら何でも構いません。選択欄に置いたファイルはご自分のブラウザが読んで欄に入れます。省くべきアップロードの段階自体がなく、拡張子が.jsonや.yamlなら向きもそれで決まります。
  3. インデントを選びます。半角空白2つ、4つ、またはタブ。タブはJSONのときだけ選べます。YAMLは半角空白で定義されていて、タブは正しいインデントになりません。
  4. エラーのある場所でエラーを読みます。ここで失敗したパーサーは、「位置4193に予期しないトークン」ではなく、何を見つけたのかを行と列とともに伝えます。たいていはそれだけで、ほかに何も開かずに設定ファイルを直せます。
  5. 結果を持ち帰ります。コピーするか、出てきた形式の名前が付いたファイルとしてダウンロードします。

詳しい解説

YAMLとJSONを相互変換する方法 対応するYAMLのサブセットをブラウザでJSONに変換し、JSONをYAMLに戻します。再使用前にコメントの損失、未対応構文、正確な数値文字列を確認します。

よくある質問

私のYAMLはどこかにアップロードされますか?

されません。このページの二つのパーサーも二つのプリンターも、ご自分のブラウザの中で、ご自分のハードウェア上で動く関数です。この道具にはネットワーク機能そのものがなく、何かを取りに行くことも送ることもありません。ページのContent-Security-Policyには接続してよいアドレスがすべて書かれていて、そのどれもこのサイトのものではありません。配備の設定にこれを使う理由がまさにそれです。ああいうファイルはホスト名とバケット名で、ときには誰かが移そうとした秘密でいっぱいで、それをよその変換ツールに貼り付けることは、相手に渡すことです。

YAMLをJSONに変換すると何が失われますか?

JSONではコメントを保持できません。このパーサーはYAML 1.2のサブセットを意図的に扱い、展開方法や型変換を勝手に選ばず、アンカー、エイリアス、タグを拒否します。JSONは値の木構造を表し、YAMLは共有ノードや型付きの値も表せます。複数文書ストリームも独自の配列に包まず拒否します。JSONからYAMLへは表されている値を保持します。YAML仕様で形式全体を確認できます。

YAMLにnoと書いたのに、JSONでは文字列で出てきました。なぜですか?

YAML 1.1はyes、no、on、offを真偽値として読み、ノルウェーの国コードをfalseにしました。この対応サブセットはYAML 1.2の規則を使い、これらを文字列、trueとfalseを真偽値、nullと~をnull、数値スカラーを数値として読みます。古い規則の読み手に備え、YAMLの出力では曖昧な単語を引用符で囲みます。

キーの順序は保たれますか?

保たれます。双方向でです。そしてこれは聞こえるより難しいことです。JSON.parseの上に作られた変換ツールは、整数に見えるキーを黙って前へ動かすので、{"10":a,"2":b}が{"2":b,"10":a}になって戻ってきます。数値は打ち込んだ桁をそのまま保つので、20桁の口座番号が下3桁を倍精度浮動小数点に奪われることもありません。並べ替えたいときはチェックボックスがあり、コードポイント順ではなくキーの読み方の順に並べます。

複数のYAML文書をまとめて変換できますか?

できませんし、どれか一つを選ぶ代わりにそう伝えます。---で区切られたファイルは複数の文書を持っていて、JSONには「複数の文書」を意味する形がありません。配列にすれば、ファイルが一度もしていない主張をすることになります。一つずつ変換してください。

ここにYAMLの整形機能がないのはなぜですか?

YAMLには書く値打ちのある圧縮形がないからです。短い書き方はフロースタイルですが読めたものではなく、読めないことは、ファイルをYAMLで持っておく理由の正反対です。JSON・XML・HTML・CSSを整えるのはJSONフォーマッターの仕事で、そちらはYAMLも整えます。

どれくらい大きいファイルまで扱えますか?

ここに制限は設けていません。その費用を払うサーバーがないからです。実際の上限はご自分の端末です。数メガバイトのYAMLなら問題なく、とても長い文書のときは、キーボードを奪い合う代わりに入力が止むのを待ってから変換します。

無料ですか。アカウントは必要ですか?

無料です。アカウントも、サインインも、試用期間もなく、貼り付ける量にも制限はありません。このサイトには広告があり、それが費用をまかなっています。広告にはあなたのテキストについて何も渡されません。

オフラインでも動きますか?

動きます。ページを一度読み込んだあとインターネットを切っても、そのまま使えます。これは何もアップロードされていないことを示す一番簡単な方法でもあります。変換のために設定を送り出す道具なら、線を抜いた瞬間に止まってしまうはずです。