Skip to content

Konverter TOML ke JSON

Tempel TOML, dapatkan JSON instan di browser. Siap Cargo.toml, pyproject.toml & config.toml. Tanggal & tabel bersarang akurat. 100% privat, tanpa unggah.

Tanpa Pelacakan Berjalan di Browser Gratis
Opsi · 2 spasi
Indentasi
0 karakter
JSON Output
0 baris
Ditinjau untuk kepatuhan spesifikasi TOML 1.0.0, kesetiaan date-time, dan penanganan bilangan bulat besar yang aman — Tim Rekayasa Go Tools · Jul 2, 2026

Apa Itu TOML dan Mengapa Mengonversi ke JSON?

TOML (Tom's Obvious, Minimal Language) adalah format berkas konfigurasi yang dibuat oleh Tom Preston-Werner agar tak ambigu, mudah dibaca manusia, dan sepele dipetakan ke tabel hash. Format ini telah menjadi format konfigurasi bawaan untuk ekosistem Rust (Cargo.toml), pemaketan Python modern (pyproject.toml, distandarkan dalam PEP 518 dan PEP 621), dan alat seperti Hugo, Netlify, Poetry, dan Foundry. JSON, sebaliknya, adalah format pertukaran-mesin universal — setiap bahasa menguraikannya, setiap API berbicara dengannya. Mengonversi TOML ke JSON karena itu adalah tugas umum: Anda menulis konfigurasi dalam TOML yang mudah dibaca, lalu mengonversi ke JSON untuk memasok program, memeriksanya dengan perkakas JSON, atau membandingkannya dalam pipeline.

Alat ini memiliki beberapa pembeda yang penting untuk kebenaran:

**1. Kesetiaan date-time.** TOML memiliki tipe tanggal dan waktu kelas satu — offset date-time, local date-time, tanggal lokal, dan waktu lokal — yang sama sekali tidak dimiliki JSON. Konverter naif meratakan semuanya menjadi stempel waktu ISO, jadi tanggal lokal seperti 1979-05-27 menjadi 1979-05-27T00:00:00Z, diam-diam mengarang waktu dan zona waktu. Alat ini mempertahankan jenis TOML yang persis: tanggal lokal tetap tanggal kalender, waktu lokal tetap waktu, dan hanya offset date-time yang membawa zona waktu. Itu menjaga data Anda jujur dan bolak-balik tanpa kehilangan data.

**2. Dukungan TOML 1.0.0 penuh.** Tabel bersarang, kunci bertitik, tabel inline, dan larik tabel ([[section]]) semuanya diuraikan dengan benar sesuai spesifikasi TOML 1.0.0 menggunakan pustaka smol-toml tanpa-dependensi. Berkas Cargo.toml dan pyproject.toml nyata dengan campuran tabel inline dan standar dikonversi persis seperti yang dituntut spesifikasi.

**3. Penanganan bilangan bulat besar yang jujur.** Bilangan bulat TOML adalah 64-bit, tetapi JavaScript browser hanya dapat menampung bilangan bulat hingga 2^53 - 1 secara persis. Alih-alih diam-diam merusak nilai besar atau mogok, alat ini mengonversi ke angka JSON terdekat dan memperingatkan Anda, jadi Anda dapat memilih menyimpan nilai sebagai string sebagai gantinya. Kejujuran tentang keterbatasan browser mendasar ini adalah sesuatu yang diabaikan sebagian besar konverter.

**4. Privasi 100% berbasis browser.** TOML Anda — yang mungkin berisi token registri, sumber paket internal, atau rahasia deployment — tidak pernah meninggalkan browser Anda. Tanpa unggah, tanpa server, tanpa pencatatan. Anda dapat mengonfirmasi ini di tab Jaringan browser Anda.

Butuh sebaliknya? Gunakan Konverter JSON ke TOML. Mengonversi antar format konfigurasi lain? Coba Konverter JSON ke YAML dan Konverter YAML ke JSON, atau validasi dan cetak-rapi output JSON Anda dulu dengan Pemformat JSON. TOML, JSON, dan YAML masing-masing punya tempatnya: TOML untuk konfigurasi aplikasi yang disunting manusia, JSON untuk pertukaran mesin, dan YAML untuk manifes infrastruktur yang bersarang dalam. Konverter ini memungkinkan Anda berpindah antara dua yang pertama tanpa satu baris kode pun.

// Convert TOML to JSON in Node.js using the smol-toml library
import { parse } from 'smol-toml';

const toml = `
[package]
name = "my-app"
version = "1.0.0"

[dependencies]
serde = { version = "1.0", features = ["derive"] }
`;

const data = parse(toml);
const json = JSON.stringify(data, null, 2);

console.log(json);
// {
//   "package": { "name": "my-app", "version": "1.0.0" },
//   "dependencies": {
//     "serde": { "version": "1.0", "features": ["derive"] }
//   }
// }

Fitur Utama

Konversi Langsung

Output JSON diperbarui instan saat Anda mengetik atau menempel TOML — tanpa perlu tombol Konversi. Input besar (>200KB) otomatis beralih ke mode manual untuk menjaga browser tetap responsif.

Kesetiaan Date-Time

Offset date-time, local date-time, tanggal lokal, dan waktu lokal TOML dikonversi menjadi string JSON yang mempertahankan jenis aslinya — tanpa stempel waktu tengah malam yang dibuat-buat, jadi bolak-balik tetap tanpa kehilangan data.

Dukungan TOML 1.0.0 Penuh

Tabel bersarang, kunci bertitik, tabel inline, dan larik tabel ([[section]]) semuanya diuraikan dengan benar melalui mesin smol-toml tanpa-dependensi, sesuai spesifikasi TOML 1.0.0.

Siap Cargo.toml & pyproject.toml

Dioptimalkan untuk berkas TOML dunia nyata yang paling umum — manifes Rust dan konfigurasi pemaketan Python — termasuk tabel inline dan larik tabel. Muat contoh untuk melihat struktur JSON persisnya.

Peringatan Bilangan Bulat Besar yang Jujur

Bilangan bulat di luar rentang aman JavaScript (2^53) tidak dapat direpresentasikan secara persis dalam JSON — alat mengonversinya ke angka terdekat dan memperingatkan Anda, alih-alih diam-diam merusak nilai.

Privasi 100% Berbasis Browser

Semua penguraian berjalan lokal di browser Anda. TOML Anda — termasuk token registri, sumber paket privat, dan rahasia deployment — tidak pernah diunggah, disimpan, atau dicatat.

Contoh

Cargo.toml (Rust)

[package]
name = "my-app"
version = "1.0.0"
edition = "2021"
authors = ["Jane Doe <jane@example.com>"]

[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }

[dev-dependencies]
criterion = "0.5"

[[bin]]
name = "my-app"
path = "src/main.rs"

Konversi manifes Cargo.toml Rust ke JSON — berguna untuk perkakas, dasbor dependensi, atau memasok metadata cargo ke skrip yang mengharapkan JSON.

pyproject.toml (Python)

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "my-package"
version = "0.3.1"
requires-python = ">=3.10"
dependencies = [
  "requests>=2.31",
  "pydantic>=2.0"
]

[project.optional-dependencies]
dev = ["pytest>=8.0", "ruff>=0.4"]

[tool.ruff]
line-length = 100

Konversi pyproject.toml PEP 621 ke JSON untuk memeriksa metadata proyek, dependensi, dan konfigurasi alat secara programatis.

netlify.toml

[build]
command = "npm run build"
publish = "dist"

[build.environment]
NODE_VERSION = "20"

[[redirects]]
from = "/old-path"
to = "/new-path"
status = 301
force = true

[[headers]]
for = "/*"

[headers.values]
X-Frame-Options = "DENY"

Konversi konfigurasi build Netlify ke JSON untuk mengaudit pengalihan dan header atau menghasilkan konfigurasi setara untuk platform lain.

Hugo config.toml

baseURL = "https://example.org"
languageCode = "en-us"
title = "My Hugo Site"
theme = "ananke"

[params]
description = "A static site built with Hugo"
mainSections = ["posts", "docs"]

[[menu.main]]
name = "Blog"
url = "/posts/"
weight = 1

[[menu.main]]
name = "About"
url = "/about/"
weight = 2

Konversi config.toml situs Hugo ke JSON untuk memigrasikan pengaturan, membandingkan konfigurasi, atau menggerakkan UI konfigurasi.

rustfmt.toml

edition = "2021"
max_width = 100
hard_tabs = false
tab_spaces = 4
newline_style = "Unix"
use_small_heuristics = "Default"
reorder_imports = true
reorder_modules = true

Konversi rustfmt.toml datar ke JSON — contoh bagus bagaimana pasangan kunci-nilai tingkat atas (tanpa tabel) memetakan langsung ke objek JSON.

Konfigurasi aplikasi dengan tanggal & larik tabel

title = "Deployment Log"
last_deployed = 1979-05-27T07:32:00Z
release_date = 1979-05-27
maintenance_window = 02:00:00

[[servers]]
name = "alpha"
ip = "10.0.0.1"
ports = [8001, 8002]

[[servers]]
name = "beta"
ip = "10.0.0.2"
ports = [9001]

Menunjukkan bagaimana date-time asli TOML (offset date-time, tanggal lokal, waktu lokal) dan larik tabel dikonversi dengan rapi ke string dan larik JSON.

Cara Menggunakan

  1. 1

    Tempel TOML Anda

    Masukkan atau tempel TOML Anda ke bidang input di atas. Anda juga dapat mengeklik 'Muat contoh' untuk mencoba Cargo.toml, pyproject.toml, atau konfigurasi deployment nyata.

  2. 2

    Lihat Output JSON Langsung

    JSON muncul instan di panel output. Sesuaikan opsi Indentasi (2 atau 4 spasi) agar cocok dengan format target Anda. Tanggal, tabel, dan larik tabel ditangani otomatis.

  3. 3

    Salin atau Unduh

    Klik Salin untuk mengambil JSON ke papan klip Anda, atau Unduh untuk menyimpannya sebagai berkas .json yang siap untuk program, API, atau perkakas Anda.

Jebakan TOML Umum

Nilai String Tanpa Kutip

Dalam TOML, nilai string harus dikutip. Kata telanjang di sebelah kanan tanda sama dengan hanya valid untuk boolean (true/false), angka, tanggal, atau sebagai bagian dari larik. Kutip string Anda dengan tanda kutip ganda atau tunggal.

✗ Salah
name = my-app
✓ Benar
name = "my-app"

Kunci Duplikat

TOML melarang mendefinisikan kunci yang sama dua kali dalam tabel yang sama, dan melarang mendefinisikan ulang tabel yang sudah didefinisikan. Ini kesalahan umum saat menggabungkan fragmen konfigurasi. Setiap kunci dan tabel harus unik.

✗ Salah
name = "a"
name = "b"
✓ Benar
name = "a"
alt_name = "b"

Format Date-Time Tidak Valid

Date-time TOML mengikuti RFC 3339. Tanggal memerlukan tahun 4-digit penuh, bulan 2-digit, dan hari 2-digit; date-time memerlukan pemisah T (atau spasi). Tanggal yang salah bentuk gagal diuraikan.

✗ Salah
released = 2026-7-2
✓ Benar
released = 2026-07-02

Kurung Penutup Hilang

Larik, tabel inline, dan header tabel harus ditutup. [ atau { yang tidak ditutup menghasilkan kesalahan penguraian yang menunjuk baris dan kolom tempat masalah terdeteksi.

✗ Salah
ports = [8001, 8002
✓ Benar
ports = [8001, 8002]

Bilangan Bulat di Luar Rentang Aman

Bilangan bulat TOML adalah 64-bit, tetapi angka JSON di browser dibatasi hingga 2^53 - 1. Nilai di luar itu dibulatkan selama konversi dan peringatan ditampilkan. Simpan bilangan bulat sangat besar sebagai string berkutip agar tetap persis.

✗ Salah
snowflake = 1420070400000000000
✓ Benar
snowflake = "1420070400000000000"

Mendefinisikan Ulang Tabel

Setelah tabel seperti [servers] didefinisikan, Anda tidak dapat membukanya lagi dengan header yang sama. Untuk memiliki beberapa entri, gunakan larik tabel ([[servers]]) sebagai gantinya, yang menjadi larik objek JSON.

✗ Salah
[servers]
name = "a"
[servers]
name = "b"
✓ Benar
[[servers]]
name = "a"
[[servers]]
name = "b"

Kasus Penggunaan Umum

Metadata Cargo Rust
Konversi Cargo.toml ke JSON untuk membangun dasbor dependensi, mengaudit versi dan fitur crate, atau memasok data manifes ke skrip dan CI yang mengharapkan JSON alih-alih TOML.
Konfigurasi Proyek Python
Konversi pyproject.toml ke JSON untuk memeriksa metadata proyek PEP 621, mengekstrak daftar dependensi, atau menggerakkan perkakas yang membaca konfigurasi pemaketan secara programatis.
Inspeksi Konfigurasi Deployment
Konversi netlify.toml, foundry.toml, atau konfigurasi platform lain ke JSON untuk mengaudit pengalihan, header, dan pengaturan build, atau untuk menghasilkan konfigurasi setara untuk platform berbeda.
Migrasi Format Konfigurasi
Konversi konfigurasi aplikasi TOML ke JSON saat berpindah ke sistem yang lebih menyukai JSON, atau sebagai langkah antara sebelum transformasi lanjut dengan perkakas JSON seperti jq.
Pengaturan Situs Statis
Konversi config.toml Hugo ke JSON untuk memigrasikan pengaturan situs, membandingkan konfigurasi antar lingkungan, atau membangun UI pengaturan yang didukung JSON.
Input API dan Skrip
Ubah TOML yang ditulis manusia menjadi JSON yang dapat dikonsumsi langsung oleh REST API, fungsi serverless, atau skrip otomasi, menjembatani konfigurasi yang mudah dibaca dan input mesin.

Detail Teknis

Penguraian TOML 1.0.0 via smol-toml
TOML diuraikan dengan pustaka smol-toml, parser tanpa-dependensi yang sepenuhnya sesuai TOML 1.0.0. Ia menangani dengan benar tabel bersarang, kunci bertitik, tabel inline, larik tabel, string multi-baris, dan keempat tipe date-time, serta melaporkan kesalahan penguraian dengan posisi baris dan kolom.
Penanganan Date-Time Tanpa Kehilangan dan Bilangan Bulat Aman
Date-time TOML diserialisasi menjadi string JSON yang mempertahankan jenis persisnya (offset date-time, local date-time, tanggal lokal, waktu lokal). Bilangan bulat di luar rentang aman JavaScript (2^53 - 1) dipromosikan ke BigInt selama penguraian, lalu dikonversi ke angka JSON terdekat dengan peringatan presisi, jadi TOML valid tidak pernah gagal dikonversi.
100% Berbasis Browser — Tanpa Unggah, Tanpa Server
Semua pemrosesan terjadi di mesin JavaScript browser Anda. Tidak ada data yang dikirim kapan pun. Input lebih besar dari 200KB beralih dari mode langsung ke manual (klik Konversi eksplisit) untuk menjaga antarmuka tetap responsif.

Praktik Terbaik

Simpan Bilangan Bulat Sangat Besar sebagai String
Jika TOML Anda memiliki bilangan bulat di luar 2^53 - 1 (ID Snowflake, stempel waktu nanodetik, penghitung besar), kutip sebagai string sebelum mengonversi. Angka JSON di browser tidak dapat menampungnya secara persis, dan alat akan memperingatkan Anda saat harus membulatkan.
Utamakan Indentasi 2-Spasi untuk Output JSON
Indentasi dua spasi adalah konvensi yang paling banyak digunakan untuk JSON dan menghasilkan output bersih dan mudah dibaca yang cocok dengan sebagian besar pemformat dan alat diff. Simpan indentasi 4-spasi untuk saat panduan gaya menuntutnya.
Validasi Output JSON Sebelum Menggunakannya
Setelah mengonversi, jika Anda berencana menyunting JSON secara manual atau memasoknya ke tempat yang ketat, jalankan melalui Pemformat JSON kami untuk memastikan valid dan diformat konsisten.
Simpan Komentar TOML Secara Terpisah
JSON tidak memiliki sintaks komentar, jadi komentar # TOML dihilangkan saat konversi. Jika komentar adalah dokumentasi penting, simpan TOML asli di kontrol versi bersama JSON yang dihasilkan.
Gunakan Larik Tabel untuk Bagian Berulang
Saat Anda memiliki beberapa bagian serupa (servers, redirects, bins), tulis sebagai larik tabel ([[section]]) alih-alih mengulang [section]. Mereka dikonversi menjadi larik objek JSON yang bersih alih-alih menyebabkan kesalahan tabel-duplikat.

Pertanyaan yang Sering Diajukan

Bagaimana cara mengonversi TOML ke JSON online?
Tempel TOML Anda ke bidang input di atas. Alat ini menguraikannya dan menghasilkan JSON secara instan di browser Anda — tanpa perlu klik tombol. Anda dapat mengganti indentasi JSON antara 2 dan 4 spasi di panel Opsi. Setelah JSON muncul di area output, klik Salin untuk menyalinnya ke papan klip Anda atau Unduh untuk menyimpannya sebagai berkas .json. Semuanya berjalan secara lokal, jadi TOML Anda tidak pernah meninggalkan perangkat Anda.
Apa itu TOML dan mengapa mengonversinya ke JSON?
TOML (Tom's Obvious, Minimal Language) adalah format berkas konfigurasi yang dirancang agar mudah dibaca dan ditulis manusia, dengan semantik jelas yang memetakan secara tak ambigu ke tabel hash. TOML menggerakkan Cargo.toml Rust, pyproject.toml Python, Hugo, Netlify, dan banyak alat lain. Anda mengonversi TOML ke JSON saat perlu memasok konfigurasi ke program atau API yang mengharapkan JSON, memeriksa berkas konfigurasi secara programatis, membandingkan dua konfigurasi dengan perkakas JSON, atau menggerakkan UI. TOML ditulis manusia; JSON dikonsumsi mesin — konverter ini menjembatani keduanya.
Bagaimana tanggal dan waktu TOML direpresentasikan dalam JSON?
JSON tidak memiliki tipe tanggal asli, jadi date-time TOML dikonversi menjadi string. Alat ini mempertahankan jenis tanggal TOML yang persis: offset date-time seperti 1979-05-27T07:32:00Z menjadi "1979-05-27T07:32:00.000Z", tanggal lokal seperti 1979-05-27 tetap "1979-05-27" (tidak dipadatkan menjadi stempel waktu penuh), dan waktu lokal seperti 07:32:00 menjadi "07:32:00.000". Banyak konverter keliru meratakan tanggal lokal menjadi stempel waktu tengah malam UTC — yang ini mempertahankan makna asli sehingga bolak-balik tanpa kehilangan data.
Apakah alat ini menangani Cargo.toml dan pyproject.toml?
Ya. Cargo.toml dan pyproject.toml adalah dua berkas TOML dunia nyata yang paling umum, dan keduanya didukung penuh, termasuk tabel bersarang ([dependencies], [tool.ruff]), tabel inline (serde = { version = "1.0", features = ["derive"] }), dan larik tabel ([[bin]]). Muat contoh Cargo.toml atau pyproject.toml di atas untuk melihat struktur JSON persis yang dihasilkan. Ini praktis untuk dasbor build, audit dependensi, atau skrip apa pun yang membaca metadata proyek sebagai JSON.
Bagaimana tabel dan larik tabel TOML dikonversi?
Header tabel TOML seperti [owner] menjadi objek JSON bersarang di bawah kunci "owner". Tabel bertitik seperti [tool.ruff] menjadi objek bersarang: { "tool": { "ruff": { ... } } }. Larik tabel yang ditulis dengan kurung ganda — [[servers]] berulang — menjadi larik objek JSON: { "servers": [ { ... }, { ... } ] }. Tabel inline ({ a = 1, b = 2 }) menjadi objek JSON biasa. Konversi mengikuti spesifikasi TOML 1.0.0 secara persis.
Apa yang terjadi pada bilangan bulat sangat besar saat mengonversi TOML ke JSON?
TOML mendukung bilangan bulat bertanda 64-bit, tetapi JavaScript (dan karenanya JSON di browser) hanya dapat merepresentasikan bilangan bulat secara persis hingga 2^53 - 1 (9007199254740991). Jika TOML Anda berisi bilangan bulat lebih besar dari itu — misalnya ID Snowflake atau stempel waktu nanodetik — nilainya tidak dapat direpresentasikan tanpa kehilangan sebagai angka JSON, dan nilai dibulatkan, dengan peringatan ditampilkan. Ini adalah keterbatasan mendasar JavaScript browser yang memengaruhi setiap konverter berbasis browser. Untuk pelestarian persis, simpan nilai seperti itu sebagai string berkutip di TOML Anda.
Apakah data TOML saya dikirim ke server mana pun?
Tidak. Semua penguraian dan konversi terjadi sepenuhnya di browser Anda menggunakan JavaScript. TOML Anda tidak pernah diunggah, disimpan, atau dicatat. Ini membuat alat aman untuk berkas Cargo.toml dengan token registri privat, pyproject.toml dengan indeks paket internal, konfigurasi deployment dengan rahasia, dan konfigurasi sensitif lainnya. Anda dapat memverifikasi ini dengan membuka tab Jaringan browser Anda — menempel TOML memicu nol permintaan jaringan.
Bisakah saya mengonversi JSON kembali ke TOML?
Ya. Gunakan Konverter JSON ke TOML pendamping untuk arah sebaliknya, atau klik tombol Tukar arah di bagian atas alat ini untuk membalik input dan output di tempat. Perhatikan bahwa JSON ke TOML memiliki beberapa batasan yang tidak dimiliki TOML ke JSON — tingkat atas harus berupa objek, dan nilai null tidak memiliki padanan TOML — yang dijelaskan dan ditangani oleh alat JSON ke TOML untuk Anda.
Bagaimana cara mengonversi TOML ke JSON di baris perintah?
Opsi populer adalah CLI berbasis Rust 'toml' atau alat Go 'yj' (yj -tj membaca TOML dan menulis JSON). Dengan Python 3.11+ Anda dapat menjalankan: python3 -c "import tomllib, json, sys; print(json.dumps(tomllib.load(sys.stdin.buffer)))" < config.toml. Dengan Node.js: npx smol-toml (atau skrip kecil menggunakan pustaka smol-toml). Untuk sekali pakai cepat di browser tanpa memasang apa pun, alat ini adalah jalur tercepat.
Bagaimana cara mengonversi TOML ke JSON di Python, Rust, atau Node.js?
Di Python 3.11+: import tomllib, json; data = tomllib.load(open('config.toml','rb')); json.dump(data, open('config.json','w')). Di Rust: gunakan crate toml dan serde_json — let value: toml::Value = toml::from_str(&text)?; let json = serde_json::to_string_pretty(&value)?. Di Node.js: import { parse } from 'smol-toml'; const data = parse(text); const json = JSON.stringify(data, null, 2) — ini pustaka dan pendekatan yang sama yang digunakan alat ini.
Apakah konverter mempertahankan urutan kunci, dan bagaimana dengan komentar?
Urutan kunci dalam tabel dipertahankan: kunci muncul di output JSON dalam urutan yang sama seperti di TOML Anda. Namun, komentar dihilangkan — JSON tidak memiliki sintaks komentar, jadi komentar # TOML tidak dapat bertahan melalui konversi. Jika Anda perlu menjaga dokumentasi, tambahkan sebagai bidang yang ramah-JSON atau simpan TOML asli bersama JSON yang dihasilkan.
Apakah ada batas ukuran berkas untuk input TOML?
Tidak ada batas keras, tetapi input lebih dari 200KB beralih dari konversi langsung ke mode manual: tombol Konversi muncul dan konversi berjalan hanya saat Anda mengekliknya, menjaga browser tetap responsif. Berkas konfigurasi tipikal — bahkan workspace Cargo.toml besar atau konfigurasi deployment multi-lingkungan — dikonversi jauh di bawah 50 milidetik.