JSONをTOML形式に変換 — Numio
JSON オブジェクトを TOML に変換します。ネストしたオブジェクトは [table] セクション、オブジェクトの配列は [[array of tables]] になります。TOML には null がないため、値が null のキーは削除されます。
JSON の設定を pyproject.toml、Cargo.toml、wrangler.toml、Hugo の設定の書式に変換する。
こんなときに使えます
- JSON の設定を pyproject.toml、Cargo.toml、wrangler.toml、Hugo の設定の書式に変換する。
- スクリプトが JSON で生成した設定を、TOML ベースの設定ファイルに移す。
使い方
- JSON オブジェクト(ルートは配列ではなくオブジェクト)を左側のエディターに貼り付けるか、ファイル読み込みボタンで UTF-8 のファイルを開きます。
- 右側の TOML を確認します。スカラーのキーが先に並び、その後に [table] と [[array]] のセクションが続きます。
- 結果をコピーし、設定を置き換える前に利用先ツールのドキュメントにあるキーと照らし合わせます。
JSON オブジェクト
{
"title": "My App",
"port": 8080,
"debug": false,
"owner": { "name": "Ada", "since": "2024-01-05T10:00:00Z" },
"servers": [
{ "host": "a.example.com", "weight": 3 },
{ "host": "b.example.com", "weight": 1 }
],
"ports": [80, 443]
}TOML
title = "My App" port = 8_080 debug = false ports = [ 80, 443 ] [owner] name = "Ada" since = "2024-01-05T10:00:00Z" [[servers]] host = "a.example.com" weight = 3 [[servers]] host = "b.example.com" weight = 1
仕様と制限
1000 以上の整数にはアンダースコア区切りが入ります(8080 は 8_080)。有効な TOML で、解析すると同じ数値になります。
日付の文字列はクォート付きの文字列のままです。JSON に日付型はないため、TOML の日時値は生成されません。
値が null のキーは通知なく省略され、JSON の 1.0 は整数の 1 として書き出されます。
@iarna/toml を使ってブラウザ内で動作します。オブジェクトと他の値が混在するリストは、TOML のテーブル配列に収められないため拒否されます。サブテーブルは 2 スペースでインデントされますが、TOML はこのインデントを無視します。
FAQ
ルートが JSON 配列でも変換できますか?
いいえ。TOML のドキュメントはテーブルでなければならないため、JSON が配列であることを示し、{"items": [...]} のようにオブジェクトで囲むよう案内します。
null 値はどうなりますか?
キーごと削除されます。{"a": null} の出力は空になります。利用先がそのキーを必要とするなら、空文字列にするか、意図的にキーを削除してください。
数値にアンダースコアが入るのはなぜですか?
シリアライザーが大きな整数を _ の桁区切りで整形するためで、TOML の仕様で認められています。どの TOML パーサーも 8_080 を 8080 と読みます。