TOML ke JSON

Cargo.toml milik Rust, pyproject.toml milik Python, config.toml milik Hugo: TOML ada di mana-mana dalam dunia konfigurasi modern, sementara banyak perkakas masih hanya berbicara JSON. Tempel TOML Anda di sini dan dapatkan JSON yang terformat rapi: bagian [tabel] menjadi objek bersarang, blok [[array tabel]] menjadi array objek, dan tanggal diteruskan apa adanya sebagai string. Parser ini mencakup inti TOML yang dipakai sehari-hari; batasan nyatanya (nilai multibaris, tabel inline, kunci bertitik) dicantumkan secara terbuka di bawah.

Cara kerja konversi

  1. 1

    Tempel TOML Anda

    Masukkan teks ke kotak input lalu tekan Konversi ke JSON. Komentar # yang memenuhi satu baris dilewati secara otomatis.

  2. 2

    Tabel menjadi objek

    Header `[server.database]` menjadi objek JSON bersarang, satu tingkat untuk setiap nama yang dipisah titik.

  3. 3

    Array tabel menjadi array

    Blok `[[users]]` membentuk array JSON dengan satu objek per blok.

  4. 4

    Nilai skalar mempertahankan tipenya

    String berkutip, bilangan bulat dan desimal sederhana, serta true/false menjadi tipe JSON asli; tanggal tetap berupa string, persis seperti yang ditulis.

  5. 5

    Salin JSON-nya

    Hasilnya diformat dengan indentasi 4 spasi, kunci tetap pada urutan aslinya, siap disalin.

Pemetaan tipe

Nilai TOML Nilai JSON Contoh
String (basic atau literal) String "hello" → "hello"
Bilangan bulat (desimal sederhana) Angka 42 → 42
Float (desimal sederhana) Angka 3.14 → 3.14
Boolean Boolean true → true
Array (satu baris) Array [1, 2, 3] → [1, 2, 3]
Tabel dengan kunci Objek [server] + port = 8080 → "server": {"port": 8080}
Array tabel Array objek [[users]] + name = "alice" → "users": [{"name": "alice"}]
Tanggal-waktu String, apa adanya 2026-04-18T10:00:00Z → "2026-04-18T10:00:00Z"

Keluaran selalu diformat dengan indentasi 4 spasi, sehingga array dan objek terbentang di beberapa baris; tabel di atas menampilkan nilai dalam satu baris agar mudah dibaca. Urutan kunci dipertahankan persis seperti di TOML Anda.

Contoh lengkap

title = "My App"

[server]
host = "localhost"
port = 8080

[[users]]
name = "alice"
admin = true

dikonversi menjadi:

{
    "title": "My App",
    "server": {
        "host": "localhost",
        "port": 8080
    },
    "users": [
        {
            "name": "alice",
            "admin": true
        }
    ]
}

TOML yang didukung dan batasan nyatanya

Didukung: header [tabel] termasuk nama bagian bertitik, [[array tabel]], pasangan key = value satu baris, string basic "..." dengan escape \n, \t, dan \", string literal '...', bilangan bulat dan desimal sederhana, true/false, array satu baris (boleh bersarang), komentar # satu baris penuh, serta tanggal yang diteruskan sebagai string.

Tidak didukung, beserta solusinya:

  • String multibaris (""" atau ''') dan array multibaris menghentikan parser dengan galat. Letakkan dulu nilainya dalam satu baris.
  • Tabel inline tidak diurai: point = { x = 1, y = 2 } keluar sebagai string "{ x = 1, y = 2 }", bukan objek. Tulis ulang sebagai bagian [point] tersendiri. Baris dependensi Cargo.toml seperti serde = { version = "1.0" } adalah kasus klasiknya.
  • Kunci bertitik di sebelah kiri tanda sama dengan tetap menjadi satu kunci datar: server.host = "a" menghasilkan kunci "server.host", tanpa bersarang. Gunakan header [server] sebagai gantinya. Sebaliknya, [nama.bagian] bertitik di header bersarang dengan benar.
  • Komentar setelah nilai tidak dibuang: port = 8080 # main menjadi string "8080 # main". Simpan komentar di barisnya sendiri.
  • Format angka di luar desimal sederhana tidak dikenali: 1_000, 0xFF, 5e2, +99, inf, dan nan keluar sebagai string berkutip. Tulis 1000, 255, 500, 99.
  • Escape \uXXXX dalam string basic tidak didekodekan. Tempelkan karakter aslinya saja.

Untuk dokumen TOML 1.0 yang lengkap, gunakan konverter baris perintah seperti toml2json, atau muat file dengan tomllib milik Python lalu keluarkan JSON dari sana.

Kapan alat ini berguna

  • Memeriksa cepat potongan TOML sebagai JSON saat debugging.
  • Meneruskan nilai konfigurasi sederhana ke linter, skrip, atau perkakas inventaris yang hanya menerima JSON.
  • Membuat fixture JSON untuk pengujian dari catatan TOML yang lebih mudah ditulis tangan.
  • Memigrasikan file konfigurasi kecil dan datar, seperti banyak config.toml milik Hugo.

Catatan bolak-balik

  • Komentar tidak pernah selamat: JSON sama sekali tidak punya sintaksis komentar.
  • Tanggal tetap string; kode di hilir harus mengurainya kembali menjadi objek tanggal.
  • Angka besar: bilangan bulat disimpan sebagai nilai 64-bit dalam teks JSON, tetapi konsumen JavaScript kehilangan presisi di atas 2^53. Waspadai stempel waktu nanodetik dan ID numerik.
  • Urutan kunci dipertahankan seperti aslinya oleh konverter ini; perkakas JSON lain bisa menyusun ulang kunci saat menuliskan kembali dokumen.

Arah sebaliknya

JSON → TOML adalah perjalanan yang lebih sulit, karena JSON punya struktur (persarangan anonim yang dalam, null) yang tidak dimiliki TOML atau ditangani secara berbeda. Sebagian besar skenario bolak-balik butuh penyesuaian manual di sisi TOML.

Pertanyaan yang Sering Diajukan

Tidak. JSON tidak punya sintaksis komentar, jadi komentar # satu baris penuh langsung dilewati. Satu peringatan: komentar setelah nilai tidak dibuang, sehingga port = 8080 # main menjadi string “8080 # main”. Pindahkan komentar ke barisnya sendiri sebelum mengonversi.

Tidak. Alat ini mencakup inti sehari-hari: tabel dengan nama bagian bertitik, array tabel, pasangan key = value satu baris, string berkutip, angka desimal sederhana, boolean, array satu baris, dan komentar satu baris penuh. String dan array multibaris, tabel inline, kunci bertitik, serta format angka seperti 1_000 atau 0xFF tidak didukung. Untuk dokumen sesuai spesifikasi penuh, gunakan perkakas CLI seperti toml2json atau tomllib milik Python.

File konfigurasi biasa terkonversi seketika. Konversi berjalan di server kami, sehingga dokumen raksasa dibatasi ukuran permintaan; untuk TOML berukuran beberapa megabita, konverter baris perintah lebih cocok.

Ya, konverter ini berjalan di sisi server: TOML dikirim ke server kami lewat HTTPS, dikonversi di sana, dan kembali dalam respons yang sama. Isinya tidak disimpan setelah itu; hanya penghitung penggunaan anonim yang dicatat. Hindari menempelkan rahasia seperti kata sandi atau kunci API.

Alat Terkait

Alat ini tersedia dalam bahasa lain