Konverter JSON ke TOML

Tempel objek JSON di kiri, dapatkan TOML di kanan. Kepatuhan ketat melalui @iarna/toml. Tanpa unggah.

  1. Tempel objek JSON ke area teks kiri.
  2. Klik "Konversi ke TOML". Tingkat atas harus berupa objek JSON — bukan array.
  3. Salin atau unduh output TOML.
  4. Untuk daftar record, gunakan array tabel TOML — bungkus dengan `{ items: [...] }` dulu.
Apa fungsinya?

Mengonversi objek JSON menjadi dokumen yang patuh TOML 1.0 melalui @iarna/toml. Objek bersarang menjadi header `[section]`; array objek menjadi blok array-of-tables `[[items]]`; string, angka, boolean, dan string datetime ISO 8601 dipetakan ke primitif TOML. Output diurutkan ke urutan kanonik — kunci muncul sebelum sub-tabel untuk kompatibilitas dengan parser TOML ketat.

Contoh

Input JSON:

{
  "name": "Ada",
  "active": true,
  "address": {
    "city": "London"
  }
}

Output TOML:

name = "Ada"
active = true

[address]
city = "London"

Jebakan umum JSON ke TOML

TOML punya aturan tingkat atas yang lebih ketat daripada JSON. Pola di bawah menjelaskan mengapa nilai JSON yang "seharusnya bekerja" bisa gagal.

  • Array tingkat atas. TOML tidak bisa merepresentasikan array JSON tingkat atas. Bungkus: `{"items": [...]}`. Hasilnya menjadi array-of-tables TOML di bawah `[[items]]`.
  • Skalar tingkat atas. Dokumen JSON telanjang `42` atau `"hello"` tidak punya kunci untuk dilekati di TOML. Bungkus dalam objek: `{"value": 42}`.
  • Nilai null. TOML tidak punya tipe null. Serializer menghilangkan sepenuhnya kunci yang nilai JSON-nya null. Jika perlu merepresentasikan "secara eksplisit tidak ada", gunakan string kosong `""` atau nilai sentinel, tergantung kode hilir Anda.
  • Array tipe campuran. TOML 1.0 memperbolehkan `[1, "two"]`, tetapi parser legacy 0.5 tidak. Jika TOML Anda harus round-trip melalui tooling 0.5, jaga array tetap homogen di JSON sebelum konversi.
  • Kunci dengan titik di output TOML. Kunci JSON seperti `"my.key"` menjadi jalur "kunci bertitik" TOML, yang akan parser TOML interpretasikan sebagai bersarang. Untuk mempertahankan titik literal di nama kunci, serializer mengutipnya: `"my.key" = ...` — tetapi konsumen masih bisa parsing-nya sebagai jalur.
  • NaN / Infinity. TOML 1.0 mendukung literal `nan`, `inf`, `-inf`. JSON tidak merepresentasikan ini — biasanya datang sebagai string `"NaN"`, `"Infinity"`, dll. Konversi manual jika butuh special float TOML asli.
Pertanyaan yang sering diajukan

Bagaimana tanggal direpresentasikan?

Tanggal JSON adalah string ISO 8601, mis. `"2026-04-26T12:00:00Z"`. Serializer menyimpannya sebagai string di TOML — bukan tipe datetime native. Untuk mendapatkan datetime TOML native, Anda harus pra-proses dan mengeluarkan nilai dengan penanda tipe yang benar di sisi JavaScript.

Apakah objek bersarang dalam diratakan?

Tidak — mereka menjadi header bersarang `[a.b.c]`. Setiap level bersarang menjadi jalur header yang dijoin dengan titik. Untuk struktur sangat dalam, output bisa punya baris header panjang; itu hanyalah cara TOML mengekspresikan kedalaman.

Apakah urutan kunci dipertahankan?

Sebagian besar. Serializer mengkanonikalisasi urutan supaya primitif datang sebelum sub-tabel (aturan TOML). Dalam setiap tier, urutan penyisipan JSON dipertahankan.

Bagaimana saya mendapatkan tabel inline TOML di output?

Anda tidak bisa — serializer selalu menggunakan header blok `[section]`, tidak pernah tabel inline. Jika butuh output inline, pasca-proses hasilnya. Tabel inline adalah fitur keterbacaan TOML, bukan bentuk data berbeda.

Apakah JSON saya diunggah?

Tidak. Semua berjalan di browser Anda — input Anda di-parse dan diserialisasi oleh JavaScript di halaman ini dan tidak pernah dikirim ke server.

Bisakah saya round-trip JSON → TOML → JSON?

Untuk tipe yang didukung (string, angka, boolean, objek bersarang, array objek), ya. Round-trip kehilangan nilai null (TOML tidak punya null) dan dapat menormalkan urutan kunci.