ToolDeck

JSON to TOML

Konversi JSON ke format TOML

Coba contoh

Input JSON

Output TOML

Berjalan lokal · Aman untuk menempel rahasia
Output TOML akan muncul di sini…

Apa Itu Konversi JSON ke TOML?

Konversi JSON ke TOML mengubah data dari JavaScript Object Notation menjadi Tom's Obvious Minimal Language. JSON menggunakan kurung kurawal, kurung siku, dan kunci yang diberi tanda kutip untuk merepresentasikan data terstruktur. TOML menggunakan sintaks pasangan kunci-nilai yang datar dengan header bagian (disebut tabel) yang terbaca seperti file INI namun dengan pengetikan yang ketat. TOML dirancang khusus untuk file konfigurasi di mana keterbacaan oleh manusia lebih diutamakan daripada pertukaran data antar mesin.

TOML telah menjadi format konfigurasi default untuk Rust (Cargo.toml), pengemasan Python (pyproject.toml), situs statis Hugo, pengaturan deployment Netlify, dan banyak alat CLI. Ketika data sumber Anda ada dalam bentuk JSON — dari respons API, konfigurasi yang diekspor, atau file yang dibuat secara otomatis — dan sistem target Anda mengharapkan TOML, Anda memerlukan konverter yang memetakan objek JSON ke tabel TOML, array JSON ke array TOML, dan mempertahankan setiap tipe data secara akurat.

Mengonversi JSON ke TOML secara online adalah cara tercepat untuk menghasilkan TOML yang valid dari data JSON yang sudah ada. Konversi menangani pemetaan tipe secara otomatis: string JSON menjadi string TOML, angka JSON menjadi integer atau float TOML, boolean JSON dipetakan langsung, dan objek JSON menjadi tabel TOML. Satu pengecualian adalah null — TOML tidak memiliki tipe null, sehingga nilai null dihilangkan atau dikonversi menjadi string kosong tergantung konverternya.

Mengapa Menggunakan Konverter JSON ke TOML Ini?

TOML adalah format yang diharapkan oleh file konfigurasi; JSON adalah format yang dihasilkan oleh API dan alat. Konverter ini menjembatani kesenjangan tersebut sehingga Anda dapat memindahkan data antara kedua format tanpa penulisan ulang secara manual.

Konversi Instan
Tempel JSON dan dapatkan output TOML seketika. Konversi berjalan saat Anda mengetik tanpa perlu menunggu pemrosesan server atau mengunggah file.
🔒
Pemrosesan Mengutamakan Privasi
Semua konversi terjadi secara lokal di browser Anda. Rahasia konfigurasi, API key, dan kredensial basis data dalam JSON Anda tidak pernah meninggalkan perangkat Anda.
🔀
Dukungan Struktur Penuh
Objek bersarang menjadi tabel TOML, array dari objek menjadi array tabel ([[table]]), dan array dengan tipe campuran ditangani dengan benar.
📋
Tanpa Akun
Buka halaman dan konversi. Tidak perlu daftar, tidak perlu menginstal ekstensi, tidak ada ketergantungan CLI. Bekerja di perangkat apa pun dengan browser modern.

Kasus Penggunaan JSON ke TOML

Konfigurasi Proyek Rust
Cargo.toml mendefinisikan dependensi, fitur, dan pengaturan build untuk proyek Rust. Konversikan daftar dependensi JSON atau konfigurasi yang dibuat secara otomatis langsung ke format Cargo.toml.
Pengemasan Python (pyproject.toml)
PEP 518 dan PEP 621 menstandardisasi pyproject.toml sebagai file metadata proyek Python. Konversikan metadata paket JSON yang sudah ada ke struktur TOML yang dibutuhkan.
Konfigurasi Situs Statis
Hugo, Netlify, dan generator situs statis lainnya menggunakan file konfigurasi TOML. Saat bermigrasi dari pengaturan berbasis JSON atau menghasilkan konfigurasi secara terprogram, konversikan outputnya ke TOML.
DevOps & Infrastruktur
Alat seperti Terraform (untuk penyedia tertentu), Consul, dan berbagai container runtime menerima konfigurasi TOML. Konversikan pengaturan yang diekspor dari JSON ke TOML tanpa mengetik ulang nilai-nilainya.
Respons API ke File Konfigurasi
REST API mengembalikan JSON. Ketika Anda perlu menggunakan data tersebut sebagai konfigurasi TOML — misalnya, feature flag atau pengaturan lingkungan — tempel responsnya dan dapatkan TOML yang valid.
Mempelajari Sintaks TOML
Pelajar dan developer yang baru mengenal TOML dapat menempel struktur JSON yang sudah familiar dan melihat output TOML yang setara.

Perbandingan JSON vs TOML

JSON dan TOML memiliki kemampuan yang tumpang tindih tetapi berbeda dalam sintaks, dukungan tipe, dan penggunaan yang dimaksudkan. Tabel ini menunjukkan perbedaan yang memengaruhi konversi.

FiturJSONTOML
SyntaxBraces, brackets, colons, commasKey = value, [table], [[array]]
CommentsNot allowed (RFC 8259)Supported with #
Data typesstring, number, boolean, null, object, arraystring, integer, float, boolean, datetime, array, table
null supportNative (null)No null type — omit the key or use empty string
Nested objectsUnlimited nesting depthDotted keys or [table.subtable] headers
Arrays of objectsArray of objects with [][[array-of-tables]] syntax
ReadabilityModerate — bracket-heavy at depthHigh — flat key-value pairs
SpecRFC 8259 / ECMA-404TOML v1.0.0 (toml.io)

Jebakan Konversi TOML

TOML memiliki aturan yang berbeda dari JSON dengan cara yang memengaruhi output konversi. Empat masalah ini paling sering menimbulkan kebingungan.

Tidak Ada Tipe null di TOML
JSON mendukung null sebagai nilai kelas utama. TOML sama sekali tidak memiliki tipe null. Saat mengonversi, nilai null harus ditangani — baik dengan menghilangkan kunci sepenuhnya, menggunakan string kosong, atau memilih nilai sentinel. Ini berarti perjalanan bolak-balik dari JSON ke TOML dan kembali mungkin tidak menghasilkan kembali nilai null yang asli.
Array Heterogen Dibatasi
Array JSON dapat mencampur tipe secara bebas: [1, "dua", true]. TOML v1.0.0 mengharuskan semua elemen dalam array bertipe sama. Jika JSON Anda mengandung array dengan tipe campuran, konverter harus mengubah semua elemen menjadi string atau menghasilkan error. Periksa output Anda ketika array sumber mengandung tipe campuran.
Objek Sangat Bersarang Menjadi Bertele-tele
JSON menangani nesting yang dalam secara alami dengan kurung kurawal yang bersarang. TOML menggunakan kunci bertitik atau header [table.subtable.key] yang dirantai, yang bisa menjadi panjang untuk struktur yang sangat bersarang. Outputnya valid tetapi kurang ringkas dibandingkan JSON aslinya.
Pembatasan Penamaan Kunci
Kunci tanpa tanda kutip TOML hanya boleh mengandung huruf ASCII, digit, tanda hubung, dan garis bawah. Kunci JSON dapat berupa string apa saja. Jika JSON Anda memiliki kunci dengan spasi, titik, atau karakter khusus, kunci tersebut harus diberi tanda kutip dalam output TOML. Sebagian besar konverter menangani ini secara otomatis, tetapi verifikasi outputnya jika kunci Anda mengandung karakter yang tidak biasa.

Contoh Kode

Mengonversi JSON ke TOML secara terprogram memerlukan library serialisasi TOML di sebagian besar bahasa. Library standar mem-parsing JSON; output TOML memerlukan paket khusus.

JavaScript (Node.js)
import { stringify } from '@iarna/toml'

const json = '{"title":"My App","database":{"host":"localhost","port":5432}}'
const obj = JSON.parse(json)
const toml = stringify(obj)
console.log(toml)
// → title = "My App"
// →
// → [database]
// → host = "localhost"
// → port = 5432
Python
import json
import tomli_w  # pip install tomli_w

json_str = '{"title": "My App", "database": {"host": "localhost", "port": 5432}}'
data = json.loads(json_str)
toml_str = tomli_w.dumps(data)
print(toml_str)
# → title = "My App"
# →
# → [database]
# → host = "localhost"
# → port = 5432
Go
package main

import (
    "encoding/json"
    "fmt"
    "github.com/pelletier/go-toml/v2"
)

func main() {
    jsonStr := `{"title":"My App","database":{"host":"localhost","port":5432}}`
    var data map[string]interface{}
    json.Unmarshal([]byte(jsonStr), &data)

    tomlBytes, _ := toml.Marshal(data)
    fmt.Println(string(tomlBytes))
    // → title = 'My App'
    // →
    // → [database]
    // → host = 'localhost'
    // → port = 5432
}
CLI (yj / remarshal)
# Using yj (https://github.com/sclevine/yj)
echo '{"title":"My App","port":3000}' | yj -jt
# → title = "My App"
# → port = 3000

# Using remarshal (pip install remarshal)
echo '{"title":"My App","port":3000}' | remarshal -if json -of toml
# → title = "My App"
# → port = 3000

Pertanyaan yang Sering Diajukan

Apakah konversi JSON ke TOML bersifat lossless?
Untuk sebagian besar data, ya. String, integer, float, boolean, objek, dan array semuanya memiliki padanan TOML langsung. Dua pengecualiannya adalah null (TOML tidak memiliki tipe null, sehingga nilai null dihilangkan atau diganti) dan array dengan tipe campuran (TOML mengharuskan tipe elemen array yang seragam). Jika JSON Anda menghindari dua pola ini, konversinya sepenuhnya lossless.
Apa yang terjadi pada nilai null JSON di TOML?
TOML tidak memiliki tipe null. Konverter biasanya menghilangkan kunci dengan nilai null dari output, karena tidak ada cara untuk merepresentasikan "kunci ada tetapi tidak memiliki nilai" di TOML. Beberapa konverter memungkinkan Anda memilih untuk menggunakan string kosong sebagai gantinya. Periksa output Anda jika nilai null memiliki makna dalam data Anda.
Apakah TOML dapat merepresentasikan objek JSON yang bersarang?
Ya. Objek JSON menjadi tabel TOML. Objek bersarang seperti {"database": {"host": "localhost"}} dikonversi menjadi header tabel [database] dengan host = "localhost" di bawahnya. Kedalaman nesting yang arbitrer didukung melalui kunci bertitik atau header tabel bersarang.
Mengapa Rust dan Python menggunakan TOML alih-alih JSON?
TOML mendukung komentar, yang sangat penting untuk mendokumentasikan pilihan konfigurasi. TOML juga menghasilkan output yang lebih bersih untuk pengaturan kunci-nilai datar, yang merupakan sebagian besar metadata paket. JSON melarang komentar (RFC 8259), sehingga lebih sulit dikelola sebagai format konfigurasi yang diedit oleh manusia.
Bagaimana TOML menangani tanggal dan waktu?
TOML memiliki tipe datetime native: offset datetime (2024-01-15T10:30:00Z), local datetime, local date, dan local time. JSON tidak memiliki tipe tanggal — tanggal disimpan sebagai string. Saat mengonversi JSON ke TOML, string yang menyerupai tanggal tetap sebagai string kecuali konverter secara eksplisit mendeteksi dan mengonversi pola ISO 8601.
Apakah aman menempelkan rahasia dan kredensial ke alat ini?
Ya. Konversi berjalan sepenuhnya di browser Anda menggunakan JavaScript. Tidak ada data yang dikirimkan ke server mana pun. Anda dapat memverifikasi ini dengan membuka developer tools browser Anda, beralih ke tab Network, dan mengonfirmasi bahwa tidak ada permintaan yang dibuat selama konversi.
Versi TOML apa yang diikuti output?
Output mengikuti TOML v1.0.0, yang dirilis pada Januari 2021 dan merupakan spesifikasi stabil saat ini. Versi ini mengharuskan tipe array yang seragam, mendukung kunci bertitik, dan mendefinisikan format datetime. Spesifikasinya dikelola di toml.io.