JSON→TOML変換
JSONドキュメントをTOML形式に変換する方法を学びます。構文のマッピング、構造的な違い、設定ファイルでJSONよりTOMLを選ぶべきタイミングを解説します。
JSON to TOML
詳細な説明
JSONからTOMLへの変換は、より人間が読みやすい設定ファイルが必要な場合に有用です。TOMLの最小限の構文はJSONの視覚的なノイズ(波括弧、キーのクォート、カンマ)の多くを取り除きながら、同じデータ構造を保持します。
JSON設定:
{
"server": {
"host": "localhost",
"port": 8080,
"debug": true
},
"database": {
"url": "postgres://localhost/mydb",
"pool_size": 5
}
}
TOMLに変換すると:
[server]
host = "localhost"
port = 8080
debug = true
[database]
url = "postgres://localhost/mydb"
pool_size = 5
変換時に変わること:
- 波括弧がテーブルヘッダーになる。 JSONのネストされた
{}オブジェクトはTOMLの[table]ヘッダーになります。 - キーのクォートがなくなる。 JSONの
"host"はTOMLではベアのhostになります(キーに特殊文字が含まれる場合を除く)。 - コロンが等号になる。
"port": 8080はport = 8080になります。 - カンマが削除される。 TOMLはキーと値のペアの区切りに改行を使用します。
JSONからTOMLへの変換の重要な制限事項:
- JSONの
nullにはTOMLの等価物がない。 TOMLはnull値をサポートしていません。コンバーターはキーを省略するか、別の方法で表現する必要があります。 - JSONの異種配列が失敗する可能性。 TOML配列は同じ型の要素を含む必要があります。
[1, "two", true]のようなJSON配列はTOMLでは無効です。 - 深いネストはTOMLでは冗長になる。 JSONが波括弧で任意のネストを処理するのに対し、TOMLはドット付きキーや
[a.b.c.d]のような長いテーブルパスを使用します。
TOMLは適度なネスト深度の設定ファイルに最適です。深くネストされたデータ構造には、JSONやYAMLの方が適している場合があります。
ユースケース
TOMLを好むツールの採用時にプロジェクトの設定をJSON形式からTOMLに移行する場合。pyproject.tomlでのPythonプロジェクトのセットアップやCargo.tomlでのRustプロジェクトなどが例です。