ツール
入力
結果
結果はここに表示されます。TOML は Cargo.toml、pyproject.toml、netlify.toml、そして多くの Hugo サイトで使われている形式で、遅かれ早かれそうしたファイルを JSON として扱いたくなります。jq で問い合わせたり、スクリプトに渡したり、2 つのバージョンを構造的に比較したりするためです。このツールは smol-toml で双方向に変換します。smol-toml は TOML 1.1 向けの小さなパーサー兼シリアライザーで、公式の toml-test スイートの大半に合格しています。仕様そのものは toml-lang/toml にあります。構文エラーは行と列を示し、一方の形式で表現できないものがあれば、黙って失うのではなく、該当するキーを示して変換を止めます。
動作のしくみ
- インラインテーブル、ドット付きキー、[[bin]] のようなテーブルの配列は、すべて通常のネストされた JSON オブジェクトと配列になります。
- オフセット付き日時は ISO 8601 の文字列になり、ローカルの日付や時刻は 1979-05-27 のように書かれたときの形を保ちます。
- JSON の null には TOML で対応するものがないため、smol-toml のように黙って捨てるのではなく、そのキーを示します。
- TOML へ変換するときは、ネストされたオブジェクトは [table] セクションに、オブジェクトの配列は [[array]] テーブルになります。
データの行き先
どこにも行きません。このツールは完全にブラウザ内で動作します。貼り付けたテキストはページが処理し、サーバーに送信されることも、ログに記録されることもありません。
このツールは無料で登録不要です。結果は開いているページの中にだけあり、どこにも保存されません。
必要なポイント
このツールは無料です。ログインもポイントも必要ありません。
よくある質問
- null 値があると変換が止まるのはなぜですか?
- TOML には null がないからです。黙ってキーを飛ばす変換ツールは、見た目は正しいのに挙動が異なるファイルを作ってしまいます。そのためこのツールは変換を拒否し、$.package.homepage のようなパスで場所を知らせます。キーを削除するか、空文字列や false のような実際の値を与えてください。
- 日時が引用符付きの文字列で返ってきたのはなぜですか?
- JSON には日付型がないため、TOML の日時は JSON へ変換する際に文字列になります。その JSON を元に戻すと、JSON のどこにもそれが日付だったという情報がないため、引用符なしの TOML 日付ではなく引用符付きの文字列になります。利用側が本物の TOML 日時を必要とする場合は引用符を外してください。
- コメントやキーの順序は保たれますか?
- TOML から JSON へは、キーの順序が保たれます。JSON から TOML へは、各テーブルの通常のキーがサブテーブルより先に書かれます。TOML では、[table] ヘッダーの後に続くキーはそのテーブルに属するからです。コメントは保たれません。JSON には置き場所がないため TOML のパース時に捨てられ、JSON を経由して往復すると説明のないデータだけが戻ってきます。TOML ファイルを正として保持し、そこから JSON を生成してください。
- 非常に大きな整数はどうなりますか?
- TOML の整数は 64 ビットですが、JavaScript の数値が正確なのは 2^53 までです。9007199254740993 を別の数に丸める代わりに、パーサーはエラーを報告します。snowflake ID のような値は文字列として保存するほうが安全です。同様に、JSON で表現できない inf と nan も拒否されます。
背後にあるオープンソース
このツールは squirrelchat/smol-toml(BSD-3-Clause)の上で動作しています。同じ処理を自分のプログラムに組み込みたい場合は、そのライブラリを使ってください。
squirrelchat/smol-toml別の呼び方
- toml json 変換
- json toml 変換
- toml 変換 オンライン
- toml パーサー
- cargo.toml json
- pyproject.toml json 変換