Utilia

Konverter TOML ke JSON

Konversi TOML ke JSON dan JSON ke TOML di browser Anda. Mendukung tabel, array of tables, tanggal, dan bilangan bulat 64 bit. Tidak ada yang diunggah.

Konversi

Cara mengonversi TOML ke JSON

  1. Pilih arahnya: TOML → JSON (bawaan) atau JSON → TOML.
  2. Tempel data Anda, atau klik Buka file untuk memuat file .toml atau .json (hingga 10 MB).
  3. Untuk TOML → JSON, pilih Indentasi (2 atau 4 spasi) dan tentukan apakah perlu mencentang Bilangan bulat besar sebagai string. Untuk JSON → TOML, biarkan atau hilangkan centang Abaikan nilai null.
  4. Centang Urutkan kunci jika Anda ingin setiap tabel diurutkan secara alfabetis.
  5. Hasilnya diperbarui saat Anda mengetik; Konversi menjalankannya lagi sesuai permintaan. Pesan kesalahan menunjukkan baris dan kolom masalahnya.
  6. Salin atau unduh hasilnya. Balik arah memindahkan hasil ke masukan agar bisa dikonversi kembali.

TOML dan JSON berdampingan

TOML (Tom’s Obvious Minimal Language) adalah format konfigurasi di balik Cargo.toml di Rust, pyproject.toml di Python, situs Hugo dan Netlify, serta banyak alat command line. Format ini dirancang agar mudah dibaca dan diedit manusia, dan dipetakan langsung ke struktur pohon mirip JSON yang terdiri dari tabel (objek), array, dan nilai.

[package]
name = "demo"
version = "0.1.0"

[[bin]]
name = "cli"

menjadi

{"package": {"name": "demo", "version": "0.1.0"}, "bin": [{"name": "cli"}]}
  • Header [table] menjadi objek JSON, dan kunci bertitik seperti a.b.c = 1 menjadi objek bersarang.
  • Array of tables, [[bin]], menjadi array objek JSON.
  • Tabel inline { x = 1 } dan array bekerja seperti yang Anda harapkan. Komentar dibuang, karena JSON tidak memilikinya.

Di mana kedua format berbeda

Tanggal dan waktu. TOML memiliki empat tipe tanggal-waktu bawaan; JSON tidak punya satu pun. Konverter menuliskannya sebagai string ISO 8601 dan mempertahankan jenisnya: tanggal-waktu dengan offset tetap 1979-05-27T07:32:00.000-08:00, tanggal lokal tetap 1979-05-27, dan waktu lokal tetap 07:32:00.000. Pecahan detik dipertahankan hingga milidetik. Saat dikonversi kembali ke TOML, nilainya menjadi string biasa, karena tidak ada yang menandainya sebagai tanggal di JSON.

Bilangan bulat. Bilangan bulat TOML adalah 64 bit bertanda, dari −9.223.372.036.854.775.808 hingga 9.223.372.036.854.775.807. Angka JavaScript, yang dipakai sebagian besar parser JSON, hanya eksak hingga 2^53 (9.007.199.254.740.991). Bilangan bulat TOML yang lebih besar ditulis dengan semua digitnya, yang merupakan JSON valid, tetapi program yang membacanya sebagai double akan membulatkannya; centang Bilangan bulat besar sebagai string untuk menghindarinya. Bilangan bulat di luar rentang 64 bit ditolak, sesuai ketentuan spesifikasi TOML.

Float khusus. inf, -inf, dan nan tidak punya bentuk JSON, sehingga ditulis sebagai string "inf", "-inf", dan "nan".

JSON → TOML. Dokumen TOML selalu berupa tabel, jadi JSON harus berupa objek di tingkat teratas. TOML tidak punya null: secara bawaan nilai null diabaikan dan sebuah pesan memberi tahu berapa jumlahnya; hilangkan centang Abaikan nilai null untuk mendapatkan pesan kesalahan berisi lokasi null pertama. JSON tidak membedakan 1 dari 1.0, sehingga bilangan bulat menjadi integer TOML, dan angka yang terlalu besar untuk 64 bit menjadi float. Di browser terbaru, bilangan bulat besar dalam JSON Anda mempertahankan digit eksaknya.

Pertanyaan yang sering diajukan

Apakah konfigurasi saya dikirim ke mana pun?

Tidak. Konversi berjalan sepenuhnya di browser Anda, sehingga API key atau secret di file konfigurasi Anda tidak pernah meninggalkan komputer Anda.

Mengapa urutan kunci saya berubah di hasil TOML?

TOML mewajibkan pasangan kunci/nilai biasa berada sebelum sub-tabel di setiap tabel, sehingga konverter menulis nilai lebih dahulu, lalu [tables], lalu [[arrays of tables]]. Datanya tetap sama.

Apakah komentar TOML dipertahankan?

Tidak. JSON tidak punya komentar, sehingga komentar hilang saat mengonversi TOML → JSON, dan tidak ada yang bisa dipulihkan saat konversi balik.

Versi TOML mana yang didukung?

TOML 1.0, termasuk kunci bertitik, tabel inline, array of tables, bilangan bulat heksadesimal, oktal, dan biner, serta keempat tipe tanggal-waktu.

Mengapa tanggal saya menjadi string di JSON?

JSON tidak punya tipe tanggal. String ISO 8601 adalah konvensi yang lazim, dan sebagian besar bahasa pemrograman bisa langsung mengurainya.