本文へスキップ

JSON⇄YAML変換

JSON ⇄ YAML

キーの順序を保って双方向に変換し、YAML側はブロック記法かフロー記法かを選べます。

YAML・JSON・TOMLを、どの方向にでもブラウザの中で変換します。パーサはnpmから持ってきたものではなくこのサイトで書いたもので、だからこそ何を受け付けないか——アンカー、タグ、複数文書のストリーム——をページにそのまま書いておけます。黙って読み違える代わりに、です。

🔒 ブラウザの中だけで動きますjsonyamlconvert
入力形式
YAML として読んでいます。
出力形式

入力

.yaml・.json・.toml ファイルを置く

このタブの中で読みます。アップロードはしません。

JSON 出力

npmから持ってこず、ここで書いています。だから扱う範囲は受け継いだものではなく選んだものです。この一覧にあるものは、誤って読む代わりに名指しして断ります。

使い方

  1. 設定を貼り付けます

    形式は文面から判別し、選択欄の下にどちらとして読んだかを表示します。判別が外れていたら自分で指定してください。JSONはYAMLとしても正しいので、`{ }`の文書はどちらにも読めます。

  2. 変換先を選びます

    KubernetesのマニフェストやCIの設定ならYAML、プログラムがパースするものならJSON、RustやPythonのプロジェクトファイルならTOMLです。

  3. 出力だけでなく警告を読みます

    変換に成功しても意味が変わっていることがあります。TOMLへ移る途中で落ちた`null`、YAML 1.2では文字列として読まれる`yes`といったものです。こうしたものは隠さず、出力の下の注記に出します。

  4. 受け付けられなかったときは対応範囲の一覧を開きます

    下の折りたたまれた部分に、これらのパーサが扱わない構文が理由とともにすべて書いてあります。受け付けないときは、自分で読み解かなければならないパーサのエラーではなく、その一覧を指し示します。

よくある質問

アンカーとエイリアスが受け付けられないのはなぜですか

`*base`を正しく展開するにはYAMLのマージの意味論を実装することになり、それを微妙に間違えると、見た目は正しいのに別のものがデプロイされるファイルができあがります。貼り付ける前に手で展開すれば確実で、ここで推測するのは確実ではありません。`<<: *base`も同じ理由です。

`yes`が文字列になったのはなぜですか

YAML 1.2のcoreスキーマがそう定めているからです。真偽値は`true`と`false`だけです。いまも本番で動いているものを含め、YAML 1.1のパーサはこれを真偽値として読みます。デプロイの結果を変える種類の違いなので、この値が出てきたときは警告に書いて知らせます。

TOMLへ変換するとき`null`はどうなりますか

落として、そのことを警告で伝えます。TOMLにはnullという値そのものがありません。キーを省くか、代わりの値を作って入れるかの二択で、作って入れれば誰かの設定に文字列の`"null"`が入り込みます。

コメントは残りますか

残りません。変換はデータモデルを経由しますが、コメントはデータではありません。JSONには置く場所すらありません。コメントを残したいなら、このサイトのYAML・TOMLの整形ツールがその場でインデントだけを直し、コメントはそのまま残します。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。