Konverter JSON / CSV / YAML / SQL / XML
Konversi dan validasi data secara lokal di browser untuk kebutuhan pengembangan sehari-hari.
Input SQL mendukung pernyataan INSERT INTO ... VALUES (gaya MySQL, PostgreSQL, SQL Server, dan SQLite); tempel hasil SELECT sebagai CSV. Nilai CSV dibaca sebagai teks. Atribut XML disimpan di "@attributes" dan teks elemen yang berdampingan dengan atribut atau elemen anak disimpan di "#text". Semua diproses secara lokal di browser Anda.
Cara menggunakan
- Tempel data Anda di kotak "Data input". Biarkan menu "Input" pada "Deteksi otomatis", atau pilih JSON, YAML, CSV, SQL, atau XML jika Anda tahu formatnya.
- Klik salah satu format di samping "Konversi ke". Hasilnya muncul di "Output", dan pesan di atas kotak mengonfirmasi konversi serta mencantumkan hal-hal yang perlu Anda periksa, seperti angka besar yang mungkin kehilangan presisi, kunci yang diganti namanya, atau pernyataan SQL yang diabaikan. Jika input tidak dapat dibaca, pesan tersebut menampilkan kesalahannya dan "Output" dikosongkan.
- Sesuaikan opsi yang ditampilkan untuk format tersebut, seperti "Pemisah" dan "Data bersarang" untuk CSV, "Database SQL", "Pernyataan", dan "Tabel" untuk SQL, atau "Root" dan "Item" untuk XML. Setiap perubahan mengonversi ulang input saat ini, jadi Anda tidak perlu mengklik tombol format lagi.
- Untuk memeriksa input tanpa mengonversinya, klik "Validasi sintaks". Hasilnya menyatakan bahwa sintaksnya valid atau menjelaskan kesalahannya, beserta baris dan kolomnya jika parser menyediakannya.
- Periksa "Output", lalu klik "Salin hasil". "Hapus" mengosongkan kedua kotak.
Pertanyaan umum
Apakah data yang saya tempel dikirim ke suatu tempat?
Tidak. Data diurai dan dikonversi di browser Anda dengan JavaScript, dan alat ini tidak mengunggahnya ke LeedyBox maupun menyimpannya. Saat dibuka, halaman ini memuat dua pustaka open source langsung dari leedybox.com, yaitu js-yaml untuk YAML dan PapaParse untuk CSV; keduanya berjalan di dalam halaman, dan data Anda tidak dikirim ke mana pun.
Bagaimana "Deteksi otomatis" menentukan format, dan kapan sebaiknya saya memilih format sendiri?
Input yang diawali { atau [ dibaca sebagai JSON, input yang diawali < sebagai XML, dan input yang diawali kata kunci SQL seperti INSERT, CREATE, SET, START, UPDATE, atau WITH yang diikuti spasi, atau diawali komentar -- atau /*, sebagai SQL. Input lainnya dicoba sebagai CSV jika baris pertamanya berisi koma, tab, atau titik koma, lalu sebagai YAML. Pilih format sendiri di menu "Input" dalam kasus berikut: jika CSV atau YAML diawali kata yang juga merupakan kata kunci SQL, misalnya baris header CSV yang diawali Start date atau Update time, karena input itu akan dibaca sebagai SQL dan gagal; jika setiap baris input YAML memiliki jumlah koma yang sama, seperti title: Hello, world yang diikuti tags: news, tech, karena input itu bisa dibaca sebagai CSV; untuk CSV yang dipisahkan garis tegak atau yang hanya berisi satu kolom, yang tidak dikenali oleh deteksi otomatis; dan jika input YAML atau CSV gagal dibaca, karena deteksi otomatis hanya melaporkan bahwa format tidak dikenali, sedangkan format yang dipilih sendiri menampilkan pesan kesalahan dari parser itu sendiri dan, dalam sebagian besar kasus, lokasi kesalahannya.
Apakah alat ini menerima JSON dengan komentar, koma di akhir (trailing comma), atau satu objek per baris?
Jika menu "Input" diatur ke JSON, hanya JSON yang valid yang diterima, jadi gunakan pengaturan itu bersama "Validasi sintaks" untuk memeriksa apakah teks tersebut merupakan JSON yang valid. Dengan "Deteksi otomatis", input yang diawali { atau [ tetapi bukan JSON yang valid dibaca sebagai sintaks flow YAML jika memungkinkan, dan sebuah catatan menyebutkannya: koma di akhir, tanda kutip tunggal, dan kunci tanpa tanda kutip pun dapat dibaca, tetapi kunci tanpa tanda kutip memerlukan spasi setelah titik duanya, karena {a:1} dibaca sebagai kunci bernama a:1 dengan nilai null. Komentar // dan /* */ bukan komentar dalam YAML; komentar itu bisa masuk ke dalam kunci atau nilai, atau membuat input tidak dapat dibaca, jadi hapus terlebih dahulu. JSON Lines (NDJSON) tersedia sebagai format output, tetapi tidak dibaca sebagai input jika terdiri dari lebih dari satu baris; letakkan baris-baris tersebut di antara [ dan ] dengan koma setelah setiap baris kecuali baris terakhir.
Mengapa 1.10 menjadi 1.1, atau 01234 menjadi 1234, saat dikonversi dari YAML?
Nilai YAML tanpa tanda kutip yang terlihat seperti angka dibaca sebagai angka, sehingga versi seperti 1.10 menjadi 1.1, kode pos seperti 01234 menjadi 1234, dan 0x1F menjadi 31; beri tanda kutip pada nilai semacam itu di YAML agar tetap berupa teks. Konverter membaca YAML dengan core schema dari js-yaml, yang mengikuti YAML 1.2 untuk boolean dan tanggal, sehingga yes, no, on, off, dan tanggal seperti 2026-10-02 tetap berupa teks, dan hanya bentuk true dan false, seperti True atau FALSE, yang menjadi boolean. Saat JSON dikonversi ke YAML, string yang bisa salah dibaca, seperti "01234", "1.10", atau "yes", ditulis dengan tanda kutip.
Mengapa elemen XML menjadi objek di satu file tetapi menjadi array di file lain?
Elemen anak yang berulang di bawah induk yang sama menjadi array, tetapi elemen anak tunggal menjadi nilai biasa atau objek, sehingga <items> dengan satu <item> menghasilkan struktur yang berbeda dari <items> dengan dua <item>. Setiap nilai XML dibaca sebagai teks, sehingga <id>1</id> menjadi "1" dan 007 tetap mempertahankan angka nolnya, sedangkan komentar dan processing instruction dibuang. Untuk output CSV dan SQL, baris diambil dari array di dalam pembungkus berkunci tunggal seperti <items>, sehingga jika hanya ada satu <item>, seluruh elemen berakhir sebagai teks JSON dalam satu kolom; untuk CSV, "Ratakan (kolom a.b.c)" memecahnya menjadi beberapa kolom.
Bisakah saya menempel dump MySQL atau PostgreSQL sebagai input SQL?
Bisa, selama baris datanya berada dalam pernyataan INSERT INTO ... VALUES. CREATE TABLE, SET, LOCK, dan pernyataan persiapan serupa dilewati, pernyataan lain seperti DROP TABLE diabaikan disertai catatan, dan baris dari beberapa tabel digabungkan menjadi satu daftar, jadi tempel tabel satu per satu jika kolom-kolomnya berbeda. Secara default, mysqldump tidak menyertakan nama kolom, sehingga kolom diberi nama column1, column2, dan seterusnya kecuali Anda membuat dump dengan --complete-insert. Secara default, pg_dump menulis baris sebagai blok COPY, yang tidak dibaca oleh alat ini, jadi buat dump dengan --column-inserts sebagai gantinya. Jika dump juga berisi fungsi atau stored procedure, tempel pernyataan INSERT-nya saja: alat ini memecah input di setiap titik koma, sehingga INSERT di dalam badan fungsi bisa dibaca sebagai data atau menghentikan konversi.
Mengapa angka dari file CSV muncul dalam tanda kutip, dan tipe kolom apa yang digunakan "CREATE TABLE + INSERT"?
Setiap nilai CSV diperlakukan sebagai teks, sehingga nol di depan seperti pada 01234 tetap terjaga, tetapi 42 menjadi "42" di JSON dan '42' di SQL, dan sel kosong menjadi string kosong, bukan null atau NULL. Tipe setiap kolom dipilih berdasarkan nilai-nilai di kolom tersebut, sehingga tabel yang dibuat dari CSV mendapatkan kolom teks: VARCHAR(255), atau TEXT jika ada nilai yang lebih panjang dari 255 karakter (NVARCHAR(255) atau NVARCHAR(MAX) untuk SQL Server, TEXT untuk SQLite). Jika input berupa JSON atau YAML dan setiap nilai dalam suatu kolom adalah angka tanpa tanda kutip, atau setiap nilainya true atau false, kolom tersebut mendapatkan tipe angka atau boolean: tipe bilangan bulat (INT, INTEGER, atau BIGINT, tergantung database dan besarnya angka), tipe floating-point untuk desimal, atau BOOLEAN (BIT untuk SQL Server, INTEGER untuk SQLite). Pernyataan ini tidak memiliki primary key, indeks, atau batasan NOT NULL, jadi tambahkan sebelum menjalankannya jika tabel Anda memerlukannya.