TOML (Tom's Obvious Minimal Language) adalah format file konfigurasi yang dirancang untuk manusia. Format ini dipetakan secara jelas ke dalam hash table, mendukung tabel bertingkat, nilai bertipe, dan komentar inline. Banyak alat dan framework menggunakan TOML sebagai format konfigurasi utama mereka: proyek Rust mengandalkan Cargo.toml, pengemasan Python menggunakan pyproject.toml, dan situs statis Hugo dikonfigurasi melalui config.toml. Mengonversi TOML ke JSON secara online memungkinkan Anda mengubah file konfigurasi ini menjadi format yang dapat dikonsumsi secara native oleh hampir setiap bahasa pemrograman, API, dan pipeline data.
JSON (JavaScript Object Notation), yang didefinisikan oleh RFC 8259, adalah format pertukaran data yang paling banyak didukung. Sementara TOML mengutamakan keterbacaan manusia dengan sintaks minimal dan dukungan komentar, JSON mengutamakan interoperabilitas antar mesin. Konverter TOML ke JSON menjembatani kesenjangan ini dengan mengurai input TOML sesuai spesifikasi TOML v1.0.0 dan menghasilkan dokumen JSON yang setara secara struktural. Konversi mempertahankan semua data: string, integer, float, boolean, array, dan tabel dipetakan langsung ke padanannya dalam JSON.
TOML memiliki empat tipe tanggal/waktu native yang tidak dapat direpresentasikan langsung oleh JSON: offset date-time, local date-time, local date, dan local time. JSON tidak memiliki tipe tanggal, sehingga nilai-nilai ini diserialisasi sebagai string ISO 8601 selama konversi.
Mengapa Menggunakan Konverter TOML ke JSON?
File konfigurasi yang ditulis dalam TOML sering kali perlu dimasukkan ke dalam sistem yang hanya menerima JSON. Daripada menulis ulang file secara manual atau menginstal library parser secara lokal, konverter berbasis browser menangani transformasi dalam hitungan detik.
🔒
Pemrosesan yang Mengutamakan Privasi
Data TOML Anda diurai dan dikonversi sepenuhnya di browser. Tidak ada yang diunggah ke server, sehingga aman untuk mengonversi file konfigurasi yang berisi kunci API, kredensial database, atau nama host internal.
⚡
Konversi Instan
Tempel TOML Anda dan dapatkan output JSON yang terformat secara langsung. Tidak perlu menginstal paket Node.js, library Python, atau alat CLI hanya untuk melakukan konversi format sekali pakai.
🔀
Dukungan Penuh TOML v1.0.0
Konverter menangani semua tipe data TOML termasuk dotted keys, inline tables, arrays of tables, multi-line strings, dan nilai tanggal-waktu. Kasus tepi yang sulit dilakukan secara manual ditangani dengan benar.
📋
Tidak Perlu Akun
Buka halaman, tempel TOML Anda, dan salin hasilnya dalam JSON. Tidak ada pendaftaran, tidak ada batas penggunaan, dan tidak ada pelacakan aktivitas. Alat ini bekerja dengan cara yang sama setiap kali Anda mengunjunginya.
Kasus Penggunaan TOML ke JSON
Pengembangan Frontend
Konversi metadata Cargo.toml dari proyek Rust WASM ke JSON untuk dikonsumsi oleh build script JavaScript atau langkah pembuatan package.json.
Rekayasa Backend
Ubah konfigurasi aplikasi yang ditulis dalam TOML menjadi JSON untuk diinjeksikan ke lingkungan yang memerlukan konfigurasi JSON, seperti variabel lingkungan AWS Lambda atau label container Docker.
DevOps dan CI/CD
Alat pipeline seperti GitHub Actions dan GitLab CI sering bekerja dengan input JSON. Konversi konfigurasi alat berbasis TOML (rustfmt.toml, taplo.toml) ke JSON untuk langkah linting atau validasi.
QA dan Pengujian
Buat fixture pengujian JSON dari file sumber TOML. TOML lebih mudah dipelihara sebagai sumber data pengujian karena dukungan komentarnya dan sintaks yang mudah dibaca, tetapi test harness sering mengharapkan input JSON.
Rekayasa Data
Saat bermigrasi konfigurasi antar sistem, file TOML dari satu platform (misalnya InfluxDB, Telegraf) mungkin perlu menjadi dokumen JSON untuk API atau alat impor platform lain.
Pembelajaran dan Edukasi
Mahasiswa yang mempelajari format data dapat menempel contoh TOML dan melihat persis bagaimana tabel menjadi objek bertingkat, bagaimana arrays of tables menjadi array JSON, dan bagaimana tipe tanggal TOML dipetakan ke string.
Referensi Pemetaan Tipe TOML ke JSON
Setiap tipe TOML memiliki padanan JSON langsung, dengan satu pengecualian: nilai tanggal dan waktu. Tabel di bawah ini menunjukkan bagaimana setiap tipe TOML dikonversi ke JSON. Pemetaan ini mengikuti spesifikasi TOML v1.0.0 dan sesuai dengan perilaku parser standar seperti tomllib (Python), toml-rs (Rust), dan @iarna/toml (Node.js).
Tipe
Sintaks TOML
Output JSON
String
"value"
"value"
Integer
42
42
Float
3.14
3.14
Boolean
true / false
true / false
Offset Date-Time
1979-05-27T07:32:00Z
"1979-05-27T07:32:00Z"
Local Date-Time
1979-05-27T07:32:00
"1979-05-27T07:32:00"
Local Date
1979-05-27
"1979-05-27"
Local Time
07:32:00
"07:32:00"
Array
[1, 2, 3]
[1, 2, 3]
Table
[section]
{ "section": {} }
Inline Table
{ key = "val" }
{ "key": "val" }
Array of Tables
[[items]]
"items": [{}]
Integer TOML mendukung garis bawah untuk keterbacaan (misalnya 1_000_000) serta literal heksadesimal (0xDEADBEEF), oktal (0o755), dan biner (0b11010110). Semua ini dikonversi ke angka desimal biasa dalam JSON. TOML juga mendukung nilai float infinity dan NaN, tetapi tidak memiliki representasi JSON sehingga akan menyebabkan kesalahan konversi dalam mode ketat.
Contoh Kode
Contoh kerja konversi TOML ke JSON dalam empat bahasa. Masing-masing membaca file TOML, mengurainya, dan menghasilkan JSON terformat.
import tomllib # Python 3.11+ (standard library)
import json
with open('config.toml', 'rb') as f:
data = tomllib.load(f)
print(json.dumps(data, indent=2, default=str))
# Dates become strings: "1979-05-27"
# Arrays of tables become JSON arrays of objects
Go
package main
import (
"encoding/json"
"fmt"
"os"
"github.com/BurntSushi/toml"
)
func main() {
var data map[string]any
_, err := toml.DecodeFile("config.toml", &data)
if err != nil {
panic(err)
}
out, _ := json.MarshalIndent(data, "", " ")
fmt.Println(string(out))
}
Apa yang terjadi pada komentar TOML selama konversi?
Komentar TOML (baris yang diawali dengan #) dibuang selama konversi. JSON tidak mendukung komentar, sehingga tidak ada cara untuk mempertahankannya dalam output. Jika Anda perlu mempertahankan komentar, pertimbangkan menggunakan JSONC (JSON with Comments) sebagai format target.
Apakah konversi TOML ke JSON dapat kehilangan data?
Untuk dokumen TOML standar, tidak ada data yang hilang. Semua string, angka, boolean, array, dan tabel memiliki padanan JSON langsung. Satu-satunya transformasi adalah nilai tanggal dan waktu, yang menjadi string ISO 8601 dalam JSON. Dua kasus tepi dapat menyebabkan masalah: TOML mendukung float infinity dan NaN yang tidak memiliki representasi JSON, dan integer yang sangat besar dapat melebihi batas presisi parser JSON (2^53 - 1 dalam JavaScript).
Bagaimana arrays of tables TOML direpresentasikan dalam JSON?
Sintaks [[double-bracket]] TOML mendefinisikan array of tables. Setiap blok [[section]] menambahkan objek baru ke array JSON. Misalnya, dua blok [[fruits]] menjadi array JSON dengan dua objek: "fruits": [{...}, {...}]. Sintaks double-bracket adalah salah satu bagian TOML yang lebih sulit dibaca secara langsung; output JSON membuat strukturnya lebih jelas.
Apakah konversi dapat dibalik? Bisakah saya mengonversi JSON kembali ke TOML?
Secara struktural, ya. Objek JSON apa pun dapat direpresentasikan sebagai tabel TOML, dan array JSON dipetakan ke array TOML. Namun, fitur khusus TOML seperti komentar, pengelompokan dotted key, dan format inline table hilang selama konversi TOML-ke-JSON awal dan tidak dapat dipulihkan. Round-trip akan menghasilkan TOML yang valid tetapi berpotensi kurang mudah dibaca.
Apa perbedaan antara TOML dan JSON untuk file konfigurasi?
TOML dirancang untuk konfigurasi: mendukung komentar, memiliki sintaks yang lebih mudah dibaca untuk struktur bertingkat, membedakan antara integer dan float, serta menyertakan tipe tanggal/waktu native. JSON dirancang untuk pertukaran data antar program. JSON lebih banyak didukung oleh alat dan API, tetapi TOML lebih mudah dibaca dan diedit oleh manusia. Banyak proyek menggunakan TOML untuk konfigurasi sumber dan mengonversi ke JSON untuk deployment.
Bagaimana alat ini menangani dotted keys seperti server.host?
Dotted keys dalam TOML (misalnya server.host = "localhost") membuat objek bertingkat dalam JSON: {"server": {"host": "localhost"}}. Ini setara dengan mendefinisikan tabel [server] dengan kunci host. Konverter menyelesaikan dotted keys menjadi struktur bertingkat penuhnya secara otomatis.
Mengapa file TOML saya gagal dikonversi?
Penyebab umum meliputi: tanda kutip yang hilang di sekitar nilai string (TOML memerlukannya), penggunaan tab untuk indentasi di dalam multi-line basic strings, definisi kunci duplikat, dan pencampuran dotted keys dengan header tabel eksplisit untuk jalur yang sama. Konverter menampilkan pesan kesalahan parser beserta nomor baris untuk membantu Anda menemukan masalahnya.