ToolDeck

JSON to TOML 変換ツール

JSONをTOML形式に変換

サンプルを試す

JSON入力

TOML出力

ローカルで実行 · シークレットの貼り付けも安全
TOML出力がここに表示されます…

JSONからTOMLへの変換とは?

JSONからTOMLへの変換は、JavaScript Object Notation(JSON)のデータをTom's Obvious Minimal Language(TOML)に変換する処理です。JSONは波括弧・角括弧・引用符で囲まれたキーを使って構造化データを表現します。TOMLはセクションヘッダー(テーブルと呼ばれる)を持つフラットなキーと値の構文を使用し、INIファイルに近い読みやすさを持ちながら厳格な型付けをサポートします。TOMLはマシン間のデータ交換よりも人間による可読性を重視した設定ファイル向けに設計されました。

TOMLはRust(Cargo.toml)、Pythonパッケージング(pyproject.toml)、Hugoスタティックサイト、Netlifyデプロイ設定、その他多くのCLIツールのデフォルト設定フォーマットとなっています。ソースデータがJSONとして存在し(APIレスポンス、エクスポートされた設定、生成されたファイルなど)、ターゲットシステムがTOMLを要求する場合、JSONオブジェクトをTOMLテーブルに、JSON配列をTOML配列に正確にマッピングするコンバーターが必要です。

JSONをTOMLにオンラインで変換するのは、既存のJSONデータから有効なTOMLを生成する最も手軽な方法です。変換は型マッピングを自動的に処理します。JSON文字列はTOML文字列に、JSON数値はTOML整数または浮動小数点数に、JSONブール値はそのまま対応し、JSONオブジェクトはTOMLテーブルになります。唯一の例外はnullです。TOMLにはnull型がないため、null値はコンバーターの実装によって省略されるか空文字列に変換されます。

このJSON to TOMLコンバーターを使う理由

TOMLは設定ファイルが必要とするフォーマットであり、JSONはAPIやツールが生成するフォーマットです。このコンバーターは両者の橋渡しをし、手動で書き直すことなくデータを変換できます。

即時変換
JSONを貼り付けると即座にTOML出力を取得できます。変換はタイプしながらリアルタイムで実行され、サーバーへの通信やファイルアップロードは一切不要です。
🔒
プライバシー優先の処理
変換はすべてブラウザ内でローカルに実行されます。JSONに含まれる設定のシークレット、APIキー、データベース認証情報がデバイスの外に送信されることはありません。
🔀
完全な構造サポート
ネストされたオブジェクトはTOMLテーブルに、オブジェクトの配列はテーブルの配列([[table]])に変換され、混在する型の配列も正確に処理されます。
📋
アカウント不要
ページを開いてすぐに変換を開始できます。サインアップ、拡張機能のインストール、CLIの依存関係は不要です。モダンブラウザがあればどのデバイスでも動作します。

JSON to TOMLのユースケース

Rustプロジェクトの設定
Cargo.tomlはRustプロジェクトの依存関係、機能、ビルド設定を定義します。JSON形式の依存関係リストや生成された設定をCargo.toml形式に直接変換できます。
Pythonパッケージング(pyproject.toml)
PEP 518とPEP 621により、pyproject.tomlがPythonプロジェクトのメタデータファイルとして標準化されました。既存のJSONパッケージメタデータを必要なTOML構造に変換できます。
スタティックサイトの設定
Hugo、Netlify、その他のスタティックサイトジェネレーターはTOML設定ファイルを使用します。JSONベースの設定から移行したり、設定をプログラムで生成したりする場合に、出力をTOMLに変換できます。
DevOpsとインフラ
Terraform(一部のプロバイダー)、Consul、各種コンテナランタイムはTOML設定を受け付けます。JSONでエクスポートされた設定を値を再入力せずにTOMLに変換できます。
APIレスポンスから設定ファイルへ
REST APIはJSONを返します。そのデータをTOML設定として使用する必要がある場合(フィーチャーフラグや環境設定など)、レスポンスを貼り付けると有効なTOMLが得られます。
TOML構文の学習
TOMLを初めて使う学生や開発者は、慣れ親しんだJSON構造を貼り付けることで、対応するTOML出力を確認しながら学習できます。

JSONとTOMLの比較

JSONとTOMLは機能面では重複しますが、構文・型サポート・用途が異なります。この表は変換結果に影響する違いをまとめています。

機能JSONTOML
SyntaxBraces, brackets, colons, commasKey = value, [table], [[array]]
CommentsNot allowed (RFC 8259)Supported with #
Data typesstring, number, boolean, null, object, arraystring, integer, float, boolean, datetime, array, table
null supportNative (null)No null type — omit the key or use empty string
Nested objectsUnlimited nesting depthDotted keys or [table.subtable] headers
Arrays of objectsArray of objects with [][[array-of-tables]] syntax
ReadabilityModerate — bracket-heavy at depthHigh — flat key-value pairs
SpecRFC 8259 / ECMA-404TOML v1.0.0 (toml.io)

TOML変換時の注意点

TOMLにはJSONと異なるルールがあり、変換結果に影響します。以下の4つの問題が最も混乱を招きやすいものです。

TOMLにnull型はない
JSONはnullをファーストクラスの値としてサポートしています。TOMLにはnull型がまったくありません。変換時には、null値を処理する必要があります。キー自体を省略するか、空文字列を使用するか、番兵値を選択するかです。このため、JSONからTOMLへ変換してから元に戻す場合、nullの値が完全に再現されないことがあります。
異なる型の混在した配列は制限される
JSONの配列は型を自由に混在させることができます(例:[1, "two", true])。TOML v1.0.0では配列内のすべての要素が同じ型である必要があります。JSONに型が混在した配列が含まれている場合、コンバーターはすべての要素を文字列化するかエラーを返す必要があります。ソース配列に混在した型が含まれている場合は出力を確認してください。
深いネストは冗長になる
JSONはネストされた波括弧で深いネストを自然に扱います。TOMLはドット記法のキーや連鎖する[table.subtable.key]ヘッダーを使用するため、深くネストされた構造では記述が長くなることがあります。出力は有効ですが、元のJSONよりコンパクトさに欠ける場合があります。
キー名の制限
TOMLのベアキーはASCII文字・数字・ダッシュ・アンダースコアのみ使用できます。JSONのキーは任意の文字列が使用可能です。JSONのキーにスペース・ドット・特殊文字が含まれている場合、TOML出力ではそのキーを引用符で囲む必要があります。ほとんどのコンバーターはこれを自動的に処理しますが、キーに特殊文字が含まれている場合は出力を確認してください。

コード例

プログラムでJSONをTOMLに変換するには、ほとんどの言語でTOMLシリアライゼーションライブラリが必要です。標準ライブラリでJSONのパースは行えますが、TOML出力には専用パッケージが必要です。

JavaScript (Node.js)
import { stringify } from '@iarna/toml'

const json = '{"title":"My App","database":{"host":"localhost","port":5432}}'
const obj = JSON.parse(json)
const toml = stringify(obj)
console.log(toml)
// → title = "My App"
// →
// → [database]
// → host = "localhost"
// → port = 5432
Python
import json
import tomli_w  # pip install tomli_w

json_str = '{"title": "My App", "database": {"host": "localhost", "port": 5432}}'
data = json.loads(json_str)
toml_str = tomli_w.dumps(data)
print(toml_str)
# → title = "My App"
# →
# → [database]
# → host = "localhost"
# → port = 5432
Go
package main

import (
    "encoding/json"
    "fmt"
    "github.com/pelletier/go-toml/v2"
)

func main() {
    jsonStr := `{"title":"My App","database":{"host":"localhost","port":5432}}`
    var data map[string]interface{}
    json.Unmarshal([]byte(jsonStr), &data)

    tomlBytes, _ := toml.Marshal(data)
    fmt.Println(string(tomlBytes))
    // → title = 'My App'
    // →
    // → [database]
    // → host = 'localhost'
    // → port = 5432
}
CLI (yj / remarshal)
# Using yj (https://github.com/sclevine/yj)
echo '{"title":"My App","port":3000}' | yj -jt
# → title = "My App"
# → port = 3000

# Using remarshal (pip install remarshal)
echo '{"title":"My App","port":3000}' | remarshal -if json -of toml
# → title = "My App"
# → port = 3000

よくある質問

JSONからTOMLへの変換はロスレスですか?
ほとんどのデータでは、はい。文字列、整数、浮動小数点数、ブール値、オブジェクト、配列にはすべて対応するTOML表現があります。例外は2つです。null(TOMLにはnull型がないためnull値は省略または置換されます)と型が混在した配列(TOMLは配列要素の型の統一を要求します)です。JSONでこの2つのパターンを使用していなければ、変換は完全にロスレスです。
JSONのnull値はTOMLでどう扱われますか?
TOMLにはnull型がありません。コンバーターは通常、null値を持つキーを出力から省略します。TOMLでは「キーは存在するが値がない」という状態を表現する方法がないためです。代わりに空文字列を使用する選択肢を提供するコンバーターもあります。null値がデータに意味を持つ場合は出力を確認してください。
TOMLはネストされたJSONオブジェクトを表現できますか?
はい。JSONオブジェクトはTOMLテーブルになります。例えば{"database": {"host": "localhost"}}というネストされたオブジェクトは、[database]テーブルヘッダーの下にhost = "localhost"として変換されます。ドット記法のキーやネストされたテーブルヘッダーによって、任意の深さのネストがサポートされています。
RustとPythonがJSONではなくTOMLを使う理由は?
TOMLはコメントをサポートしており、設定の選択を文書化するために不可欠です。また、パッケージメタデータの大部分を占めるフラットなキーと値の設定に対してよりクリーンな出力を生成します。JSONはコメントを禁止しており(RFC 8259)、人間が編集する設定フォーマットとして管理しにくいという問題があります。
TOMLはどのように日付と時刻を扱いますか?
TOMLにはネイティブのdatetime型があります。オフセットdatetime(2024-01-15T10:30:00Z)、ローカルdatetime、ローカルdate、ローカルtimeです。JSONには日付型がなく、日付は文字列として保存されます。JSONをTOMLに変換する際、日付に似た文字列はコンバーターが明示的にISO 8601パターンを検出して変換しない限り文字列のままです。
シークレットや認証情報をこのツールに貼り付けても安全ですか?
はい。変換はJavaScriptを使用してブラウザ内で完全に実行されます。サーバーにデータは送信されません。ブラウザの開発者ツールを開き、「ネットワーク」タブを確認することで、変換中にリクエストが発生していないことを確認できます。
出力はどのバージョンのTOMLに準拠していますか?
出力はTOML v1.0.0に準拠しています。このバージョンは2021年1月にリリースされ、現在の安定版仕様です。配列要素の型の統一を要求し、ドット記法のキーをサポートし、datetimeフォーマットを定義しています。仕様はtoml.ioで管理されています。