INI ↔ JSON / YAML / TOML 変換

INI を JSON・YAML・TOML に、JSON や YAML を INI に変換します。コメントは引き継がれず、007 や 1e3 のような値は文字列のまま、一覧や入れ子のオブジェクトは JSON テキストとして出力されます。

ブラウザ内でローカルに実行
ローカル処理 ·

INI・JSON・YAML の設定を変換する方法

設定を貼り付け、5 つの方向から 1 つを選びます。INI → JSON、INI → YAML、INI → TOML、JSON → INI、YAML → INI です。変換を押すと結果が指標の下に表示され、コピーまたはダウンロードで converted-config.json / .yaml / .toml / .ini として保存できます。

処理はすべてページ内で完結します。アップロードもこのサイトへの通信もなく、オフラインでも編集を続けられます。TOML は出力専用で、このツールが TOML を読み込むことはありません。

  1. エディターに設定を貼り付けるか、例を読み込むを押すと 1 つのセクションを含む小さな INI サンプルが入ります。
  2. 方向を選びます。INI → JSON、INI → YAML、INI → TOML、JSON → INI、YAML → INI のいずれかです。
  3. 変換を押します。エディターが空、JSON や YAML が読めない、または INI の行が key = value の組でも [セクション] 見出しでもない場合は実行が止まり、状態行に行と列が表示されます。
  4. 指標(最上位の設定数、入力行数、入力サイズ、出力サイズ)を確認し、続いて検出結果を読みます。統合されたセクション、重複したキー、省略した null、INI で表現できない値がここに並びます。
  5. コピーまたはダウンロードで変換結果を取得し、次のファイルの前にクリアを押します。

変換が保持するもの、保持できないもの

INI 側の読み取り規則

読み取りは .ini ファイルの慣例に従います。key = value または key: value の行、[セクション] 見出し、; と # のコメントです。行内コメントは記号の前に空白がある場合だけ始まるため、port=8080 ; note は 8080 を、color=#ff0000 はその値を保ちます。空行は無視され、[セクション] 見出しより後の設定はそのセクションに属します。

値は引用符で囲めます。二重引用符ではバックスラッシュ、二重引用符、改行、復帰、タブ、コードポイントのエスケープが使え、単一引用符はそのままの文字列です。=、:、#、;、角かっこを含むキーも同じように引用符が必要です。見出しには [database] ; 認証情報 のようにコメントを付けられます。

重複は拒否せず統合します。2 つ目の [database] は最初のセクションに統合され、同じキーは最後の値が有効になり、以前のトップレベル設定と同じ名前のセクションはその設定を置き換えます。いずれもファイルを黙って書き換えず、検出結果として報告されます。

値の型:テキストのまま残るもの

値が数値になるのは、JavaScript がその数値を同じ文字並びで出力できる場合だけです。8080、-7、3.5 は数値ですが、007、0123456789、1.50、+1、1e3、2^53 を超える ID はテキストのままです。郵便番号や電話番号、バージョンが書き換わることはありません。true と false は真偽値、null、nil、~ は null になり、yes、no、on、off はテキストのままです。

JSON と YAML はそれぞれのパーサーが返した型を保ちます。INI へ書き出すとき、数値・真偽値・null として読み戻される文字列は引用符で囲み("8080"、"true"、"null")、コメント記号や前後の空白、改行を含む文字列はエスケープして引用するため、往復しても同じ値と同じ型が返ります。

出力先ごとに保たれるもの

INI → JSON・YAML・TOML は構造と値の型を保ちます。TOML に null はないため、値が null の設定は出力から外し、検出結果に名前を挙げます。TOML が別の意味で読む名前は引用符で囲み、[my section] は ["my section"] になります。

JSON → INI と YAML → INI は 1 階層に平坦化します。リストやネストしたオブジェクトは圧縮 JSON(tags=["a","b"])として出力し、その旨を報告します。最上位がリストや単一の値の場合は INI として出力できず実行が止まり、空のドキュメントでは INI 出力が空であることを報告します。

INI のセクションは 1 階層のみで、インデントによる継続行は読み取らず、入力のコメントはどの出力にも引き継がれません。

最近使ったツール: