JSON ke TOML

Alat gratis ini membantu mengubah objek JSON menjadi file konfigurasi TOML v1.0 dengan cepat. Konverter akan otomatis membuat tabel bersarang ([section]), subtable ([a.b]), dan array tabel ([[items]]), sehingga praktis untuk menyiapkan Cargo.toml atau pyproject.toml. Seluruh proses berjalan lokal di browser.

Rekomendasi Terkait

Apa itu TOML? Mengapa mengonversi JSON ke TOML?

TOML adalah singkatan dari Tom's Obvious, Minimal Language, format file konfigurasi yang dirilis pada tahun 2013 oleh salah satu pendiri GitHub, Tom Preston-Werner. Tujuan desainnya adalah: sintaksis yang jelas (obvious), minimal (minimal), mudah dibaca manusia, dan eksplisit tanpa ambiguitas. TOML 1.0 menjadi versi stabil pada tahun 2021 (toml-lang/toml), dan kini telah menjadi format konfigurasi default untuk Rust Cargo, Python PEP 621 (pyproject.toml), Hugo, Prettier, Deno, Taplo, dan banyak alat lainnya.

TOML memiliki beberapa keunggulan jelas dibandingkan JSON dan YAML dalam skenario file konfigurasi: ①Tidak ada jebakan indentasi YAML—YAML menggunakan indentasi untuk menyatakan tingkatan, kesalahan indentasi akan sepenuhnya mengubah makna konfigurasi (misalnya list menjadi string), TOML menggunakan [table] untuk menyatakan tingkatan secara eksplisit, tanpa ambiguitas; ②Lebih cocok untuk konfigurasi daripada JSON—tanda kutip dan kurung kurawal JSON sangat bertele-tele dalam konfigurasi kompleks, penulisan key = value TOML lebih bersih, komentar didukung secara native; ③Sistem tipe yang jelas—TOML membedakan tujuh tipe: integer/float/string/boolean/datetime/array/table, tanpa ambiguitas "apakah angka itu integer atau float" seperti JSON, dan tanpa masalah Norway YAML 1.1 (NO diurai menjadi boolean false).

Struktur inti TOML terdiri dari empat elemen: ①Pasangan kunci-nilai (key = value) mewakili item konfigurasi dasar; ②Tabel (Table) dinyatakan dengan [name] untuk pengelompokan bernama, mendukung bersarang ([a.b.c]); ③Array of Tables dinyatakan dengan [[name]] untuk daftar objek isomorfik, umum digunakan untuk konfigurasi multi-lingkungan, daftar plugin, daftar dependensi; ④Array mendukung tipe primitif inline ([1, 2, 3]) dan penulisan multi-baris. Alat ini secara cerdas mengenali struktur JSON saat konversi dan secara otomatis memilih sintaksis TOML yang paling sesuai.

Ada beberapa motif umum untuk mengonversi JSON ke TOML: ①Proyek bermigrasi dari ekosistem Node.js ke ekosistem Rust/Python baru, format konfigurasi perlu diseragamkan ke TOML; ②Tim memutuskan untuk mengelola konfigurasi JSON yang tersebar ke TOML, memanfaatkan tingkatan [section] TOML untuk menghindari beban membaca dari JSON bersarang dalam; ③Mengganti YAML dengan TOML untuk menghilangkan bug aneh yang disebabkan oleh indentasi; ④Mengonversi metadata JSON yang dikeluarkan upstream ke TOML dalam CI/CD untuk injeksi ke alat downstream. Alat ini mencakup kebutuhan konversi untuk semua skenario ini.

Proses konversi pada dasarnya adalah pemetaan pohon sintaksis: JSON.parse() mengurai teks menjadi objek JavaScript (AST), kemudian melintasi setiap node secara rekursif—string, angka, boolean, null dipetakan ke skalar TOML yang sesuai; array dibagi menjadi array inline atau array tabel menurut tipe elemen; objek bersarang dipetakan ke tabel atau sub-tabel. Akhirnya, teks dikeluarkan sesuai spesifikasi TOML. Pemetaan terstruktur ini menjamin hasil konversi 100% valid secara sintaksis, tanpa kesalahan format.

Kasus penggunaan

  • Saat ingin menyiapkan draft Cargo.toml untuk proyek Rust dengan cepat
  • Saat memindahkan pengaturan proyek Python ke pyproject.toml
  • Saat mengubah konfigurasi Hugo, Deno, atau Prettier dari JSON ke TOML
  • Saat tim ingin menstandarkan konfigurasi CI/CD atau DevOps menggunakan TOML
  • Saat membandingkan JSON yang ada dengan TOML untuk memilih format yang lebih mudah dibaca
  • Saat belajar sintaks TOML lewat contoh tabel bersarang dan array tabel

Cara Penggunaan

  1. Tempel JSON ke editor kiri atau unggah file .json / .txt. Jika perlu, buka contoh bawaan
  2. Alat akan langsung memproses data dan menampilkan output TOML v1.0 di panel kanan
  3. Jika ada error sintaks, periksa pesannya lalu rapikan JSON terlebih dulu
  4. Salin hasilnya atau unduh sebagai config.toml untuk dipakai di proyek

Fitur

  • Menghasilkan output sesuai TOML v1.0 yang bisa langsung dipakai di Cargo, Poetry, Hugo, Prettier, dan alat lain yang mendukung TOML
  • Memetakan objek JSON bertingkat ke tabel TOML seperti [a] dan [a.b.c] agar struktur tetap rapi dan mudah dibaca
  • Mengubah array objek menjadi array tabel [[items]], cocok untuk daftar host, dependency, atau lingkungan
  • Melakukan escape untuk tanda kutip, backslash, baris baru, dan tab sesuai aturan TOML
  • Memetakan string, angka, boolean, dan null ke tipe TOML yang sesuai; null akan menjadi string kosong ""
  • Cukup tempel JSON di panel kiri dan hasil TOML langsung muncul di panel kanan secara real-time
  • Menyediakan contoh lengkap dengan objek bersarang, array, dan array tabel untuk uji coba cepat
  • Mendukung impor file .json / .txt serta unduh hasil sebagai config.toml
  • Di desktop, lebar panel bisa disesuaikan dengan drag dan 200 riwayat terbaru disimpan otomatis
  • Setelah konversi, Anda bisa lanjut ke formatter JSON untuk merapikan atau memeriksa data sumber
  • Seluruh proses berjalan lokal di JavaScript browser sehingga konfigurasi sensitif tidak dikirim ke server

Pertanyaan Umum

Bagaimana cara mengonversi JSON ke file konfigurasi TOML?

Tempel konten JSON ke kotak input di sisi kiri, alat akan otomatis mengurai objek JSON dan mengonversinya ke format file konfigurasi sesuai standar TOML v1.0. Pasangan kunci-nilai menjadi key = value, objek bersarang menjadi tabel TOML ([section]) dan sub-tabel ([a.b]), array secara otomatis dibagi menjadi array inline atau array tabel ([[items]]) sesuai konten. Klik tombol contoh untuk memuat contoh bersarang dan melihat efeknya, hasil konversi dapat langsung diunduh sebagai file config.toml untuk konfigurasi proyek.

Skenario apa yang cocok untuk TOML, YAML, dan JSON?

JSON cocok untuk pertukaran data API dan transmisi data front-end/back-end, merupakan standar de facto untuk antarmuka REST; YAML cocok untuk struktur data kompleks dan konfigurasi CI/CD (GitHub Actions, Ansible, Kubernetes), keterbacaan tinggi, mendukung komentar dan multi-dokumen; TOML cocok untuk skenario file konfigurasi yang jelas (Rust/Cargo, Python pyproject, Hugo, Prettier), sintaksis ringkas, minim ambiguitas, tanpa jebakan indentasi. Ketiganya tidak memiliki keunggulan absolut, kuncinya adalah mencocokkan skenario—file konfigurasi disarankan menggunakan TOML, konfigurasi CI/CD disarankan menggunakan YAML, data API menggunakan JSON.

Bagaimana objek JSON bersarang direpresentasikan di TOML?

TOML menggunakan Tabel (Table) untuk merepresentasikan struktur bersarang. Satu tingkat bersarang seperti {"database": {"host": "localhost"}} dikonversi menjadi [database] host = "localhost"; multi tingkat bersarang seperti {"server": {"ssl": {"enabled": true}}} dikonversi menjadi [server.ssl] enabled = true. Alat ini secara otomatis mengenali tingkat bersarang dan menghasilkan jalur header tabel yang sesuai, tidak perlu penyesuaian manual.

Bagaimana array JSON dikonversi di TOML?

TOML membedakan dua sintaksis array: ①Array tipe primitif (seperti ["a", "b", 1, 2]) dikonversi menjadi array inline key = ["a", "b", 1, 2], dibungkus kurung siku dan dipisahkan koma; ②Array objek (seperti [{"name": "primary"}, {"name": "replica"}]) dikonversi menjadi array tabel [[items]], setiap objek diawali header [[items]], field dibentang di bawahnya. Alat ini secara otomatis menilai tipe array dan memilih sintaksis TOML yang paling sesuai.

Apakah TOML yang dihasilkan dapat langsung digunakan untuk Cargo.toml?

Ya. Alat ini secara ketat mengikuti spesifikasi resmi TOML v1.0 (github.com/toml-lang/toml), TOML yang dihasilkan dapat langsung digunakan untuk Cargo (manajemen paket Rust), Poetry/pyproject (manajemen paket Python), Hugo (situs statis), Prettier, Deno, Taplo, dan alat apa pun yang mendukung format TOML. Perhatian: jika Anda memerlukan bagian tertentu [package] / [dependencies] dari Cargo.toml, silakan tambahkan field yang sesuai sesuai spesifikasi Cargo (name, version, edition, tabel dependensi crate, dll).

Apa yang terjadi pada nilai null dalam JSON saat konversi?

TOML tidak memiliki tipe null, oleh karena itu null dalam JSON akan dikonversi menjadi string kosong "" (ekspresi ekuivalen yang paling umum). Jika konsumen TOML Anda memiliki persyaratan khusus untuk field null (misalnya field optional dari sebuah crate di [dependencies]), silakan sesuaikan baris yang sesuai secara manual setelah konversi.

Bagaimana tanda kutip ganda dan baris baru di dalam string ditangani?

String TOML harus dibungkus tanda kutip ganda, tanda kutip ganda internal, garis miring terbalik, baris baru (\n), carriage return (\r), tab (\t) semuanya perlu di-escape sesuai aturan TOML. Alat ini secara otomatis menangani escape ini, misalnya He said "Hello" dalam JSON setelah dikonversi ke TOML menjadi He said \"Hello\", baris baru dalam string multi-baris menjadi \n. Tidak perlu escape manual, output alat dapat dibaca dengan benar oleh parser TOML.

Apakah ada dukungan tipe tanggal-waktu di TOML yang dihasilkan?

Alat ini hanya mendukung input teks JSON, dan standar JSON tidak memiliki tipe tanggal-waktu native (praktik umum adalah string ISO 8601, seperti "2026-01-01T00:00:00Z"). TOML yang dihasilkan akan mempertahankan nilai-nilai ini sebagai string (key = "2026-01-01T00:00:00Z"). Jika Anda memerlukan tipe local datetime/offset datetime native TOML, silakan ubah string menjadi literal tanggal TOML polos secara manual (seperti 2026-01-01T00:00:00).

Apakah data konfigurasi akan diunggah saat konversi lokal di browser?

Tidak. Semua penguraian JSON, pembuatan TOML, dan escape string dilakukan sepenuhnya di mesin JavaScript lokal browser Anda, tidak akan dikirim ke server mana pun melalui jaringan, dan dapat digunakan secara normal bahkan tanpa koneksi internet. JSON yang berisi informasi konfigurasi sensitif seperti kata sandi database, kunci API, alamat intranet dapat dikonversi dengan aman.

Pemecahan Masalah

JSON error "Unexpected token", bagaimana cara mengatasinya?

Ini adalah kesalahan sintaksis JSON. Penyebab umum: ①Koma tambahan di akhir (trailing comma), seperti {"a":1,}; ②Membungkus string dengan tanda kutip tunggal, seperti {'a':1} (JSON harus tanda kutip ganda); ③Nama kunci tidak dikutip ganda, seperti {a:1}; ④Komentar // atau /* */ (standar JSON tidak mendukung). Anda dapat menggunakan alat perbaikan JSON di situs ini untuk memperbaiki otomatis kesalahan umum ini, lalu tempel kembali ke alat ini untuk konversi.

TOML yang dihasilkan error "invalid TOML" di Cargo, bagaimana?

Biasanya ini adalah konflik nama field atau field wajib yang hilang. Parser TOML sangat ketat terhadap jalur header tabel, kunci duplikat, dan escape karakter. Periksa: ①Apakah ada nama kunci duplikat dalam lingkup yang sama; ②Apakah karakter khusus dalam string di-escape dengan benar (tanda kutip ganda, garis miring terbalik, baris baru); ③Apakah tingkatan bersarang terlalu dalam (TOML 1.0 menyarankan tidak lebih dari 5 tingkat); ④Apakah bagian wajib Cargo seperti [package] hilang. Sintaksis output alat ini 100% valid, masalah biasanya pada pengguna (misalnya apakah nama field sesuai dengan spesifikasi Cargo).

Array objek dikonversi menjadi array inline, bukan array tabel?

Array JSON hanya akan dikonversi menjadi array inline ["a","b"] ketika semua elemennya adalah tipe primitif (string/angka/boolean/null), array objek (seperti [{"name":"x"}]) akan dikonversi menjadi array tabel [[items]]. Jika array objek Anda salah dikenali sebagai array inline, itu berarti ada elemen non-objek yang tercampur. Periksa data: ①Apakah ada string atau angka yang tercampur dalam array; ②Apakah tingkatan bersarang rusak.

Beberapa nama kunci dikutip setelah konversi, bagaimana menghilangkannya?

TOML menetapkan bahwa nama kunci hanya boleh berisi huruf, angka, garis bawah, dan tanda hubung ([A-Za-z0-9_-]). Jika nama kunci JSON berisi karakter khusus (seperti spasi, titik, karakter Tionghoa, emoji, kata cadangan), alat akan secara otomatis membungkusnya dengan tanda kutip ganda untuk menjamin legalitas TOML, misalnya {"my key": 1} akan dikonversi menjadi "my key" = 1. Jika alat downstream Anda tidak menerima nama kunci yang dikutip, silakan ubah nama kunci JSON menjadi karakter yang valid (A-Z a-z 0-9 _ -) sebelum konversi.

File besar menyebabkan browser lag saat konversi, apa yang harus dilakukan?

Alat ini dioptimalkan untuk konversi real-time (input langsung dikonversi), tetapi file yang sangat besar (>1MB, ratusan ribu baris) masih dapat menjadi beban. Saran: ①Pertama gunakan alat pemformat JSON untuk memeriksa legalitas JSON; ②Konversi dalam batch (misalnya pisahkan berdasarkan kunci tingkat atas); ③Pastikan browser memiliki memori yang cukup; ④File konfigurasi yang sangat besar (10MB+) disarankan untuk ditangani dengan alat baris perintah seperti taplo, tomlq, alat ini dirancang untuk skenario konfigurasi harian (KB hingga ratusan KB).

Glosarium

TOML
Tom's Obvious, Minimal Language, bahasa format yang dirancang untuk file konfigurasi, sintaksis ringkas tanpa ambiguitas, merupakan format default untuk Rust Cargo / Python pyproject / Hugo.
Tabel (Table)
Pengelompokan bernama yang dinyatakan dengan [name] di TOML, setara dengan objek di JSON, mendukung nesting titik seperti [server.ssl].
Array of Tables
Daftar objek isomorfik yang dinyatakan dengan [[name]] di TOML, setiap bagian [[name]] berisi semua field sebuah objek, setara dengan array objek di JSON.
Inline Table
Sintaksis yang didukung TOML 1.0, menggunakan { key = value, key = value } untuk menyatakan objek sederhana dalam satu baris, cocok untuk objek datar yang tidak memerlukan penamaan.
Cargo.toml
File konfigurasi standar proyek Rust, mendefinisikan metadata package, dependencies, dev-dependencies, features, dll., dalam format TOML.
pyproject.toml
File konfigurasi standar proyek Python (PEP 621), mendefinisikan build-system, metadata project, dependencies, konfigurasi tool (black/pytest/mypy, dll.).
TOML v1.0
TOML 1.0 adalah versi stabil yang dirilis resmi pada tahun 2021, alat ini secara ketat mengikuti spesifikasi ini (github.com/toml-lang/toml/blob/main/toml.md).
Objek Bersarang JSON
Objek yang berisi objek lain di JSON, sesuai dengan Tabel TOML ([section]) atau sub-tabel ([a.b.c]).
Escape TOML
Karakter khusus dalam string TOML seperti tanda kutip ganda, garis miring terbalik, dan baris baru harus di-escape dengan garis miring terbalik (\", \\, \n), alat ini menangani secara otomatis.
File Konfigurasi (Config File)
File pengaturan yang dibaca aplikasi saat startup, dipisahkan dari kode agar mudah diedit. TOML adalah salah satu standar de facto untuk file konfigurasi.

Tabel Pemetaan Tipe JSON ke Tipe TOML

Alat ini mengonversi tipe JSON ke tipe TOML sesuai aturan berikut:

Tipe JSONTipe TOMLSintaksis TOMLKeterangan
stringstringkey = "value"String TOML harus dibungkus tanda kutip ganda
integerintegerkey = 8080Integer tanpa titik desimal
floatfloatkey = 3.14Float harus memiliki titik desimal
booleanbooleankey = trueTOML hanya menggunakan true / false huruf kecil
nullstring (kosong)key = ""TOML tidak memiliki tipe null, dikonversi ke string kosong
array[primitive]arraykey = ["a", "b"]Array tipe primitif menggunakan kurung siku inline
array[object]array of tables[[items]] key = valueArray objek menggunakan array tabel [[name]]
objecttable[name] key = valueObjek menggunakan deklarasi tabel [name]

Tabel Escape String TOML

Karakter khusus yang harus di-escape dalam string TOML:

Karakter AsliSetelah Escape TOMLNamaSkenario Contoh
"\"Tanda Kutip GandaTanda kutip ganda di dalam string
\\\Garis Miring TerbalikPath Windows C:\Users
Baris Baru\nNewlineKompresi string multi-baris
Tab\tTabField tab
Carriage Return\rCarriage ReturnBaris baru Windows CRLF
\b\bBackspaceKarakter backspace
\f\fForm FeedKarakter form feed
U+0000\u0000Unicode 0Karakter kontrol harus di-escape dengan \u

Contoh Konversi JSON ke TOML

Input JSON dengan struktur kompleks dan output TOML yang sesuai:

StrukturContoh
Input JSON{ "name": "app", "port": 8080 }
Output TOMLname = "app" port = 8080
Input JSON{ "server": { "host": "0.0.0.0", "port": 443 } }
Output TOML[server] host = "0.0.0.0" port = 443
Input JSON{ "hosts": [{"ip":"10.0.0.1"},{"ip":"10.0.0.2"}] }
Output TOML[[hosts]] ip = "10.0.0.1" [[hosts]] ip = "10.0.0.2"

Privacy & Security

Parsing JSON, pembuatan TOML, escape string, dan pembacaan file semuanya berjalan lokal di JavaScript browser Anda. JSON yang dimasukkan dan TOML yang dihasilkan tidak dikirim ke server maupun disimpan untuk analisis. Karena itu alat ini cocok digunakan bahkan untuk konfigurasi sensitif seperti password database, API key, atau alamat jaringan internal. Riwayat lokal hanya tersimpan di localStorage browser dan akan hilang setelah cache dibersihkan.

Authoritative References