Konverter CSV ke JSON

Ubah CSV ke JSON atau JSON ke CSV, dengan deteksi pembatas, penanganan header, dan konversi tipe tanpa kehilangan.

CSV
JSON

Keluaran akan muncul di sini

Apa yang dilakukan alat ini

CSV adalah apa yang diserahkan lembar sebar, ekspor basis data, dan dasbor analitik kepada Anda; JSON adalah apa yang diinginkan API dan kode. Alat ini mengonversi antara keduanya di kedua arah, di peramban Anda. Tempel CSV dan Anda mendapatkan larik JSON — objek yang kuncinya diambil dari baris header, atau larik polos ketika data tak punya header. Balik arah dan larik JSON menjadi CSV, dengan setiap nilai dikutip persis sebanyak yang dibutuhkannya.

Pekerjaan itu terjadi di perangkat Anda, yang penting karena CSV adalah format yang orang pakai untuk mengekspor daftar pelanggan, faktur, dan ekstrak analitik. Tak satu pun dari itu diunggah ke mana pun.

Mengapa memecah pada koma tak cukup

Cara yang tampak jelas untuk membaca CSV — memecah tiap baris pada koma — gagal pada berkas nyata, karena format itu punya mekanisme escape. Bidang yang dibungkus kutip ganda boleh mengandung pembatas, kutip harfiah yang ditulis sebagai dua kutip berturut-turut, atau bahkan pemutus baris, dalam hal ini satu rekaman merentang beberapa baris berkas. Alat ini mengimplementasikan aturan sesungguhnya (RFC 4180) dengan pengurai karakter demi karakter, jadi ketiga kasus itu lolos utuh.

name,note
Grace,"rear admiral, USN"
Ada,"she said ""hello"""
Alan,"two
lines"

Keempat rekaman itu punya dua bidang masing-masing, meski ada koma, kutip, dan baris-baru tambahan. Jika pengutipan cacat — bidang membuka kutip dan tak pernah menutupnya — Anda mendapatkan baris dan kolom tempat kutip liar dimulai ketimbang tabel yang diam-diam rusak.

Pembatasnya sering bukan koma

Terlepas dari namanya, nilai yang dipisah koma sering kali bukan itu. Dalam lokal tempat koma adalah pemisah desimal — sebagian besar Eropa daratan — Excel mengekspor dengan titik koma, karena 1,50 adalah angka di sana. Alat basis data dan baris perintah sering memancarkan data yang dipisah tab, dan saluran log menyukai pipa. Menempel salah satu dari itu ke alat yang hanya mengenal koma menghasilkan satu kolom yang sangat lebar, frustrasi CSV paling umum yang ada.

Jadi pembatasnya dideteksi ketimbang diasumsikan. Tiap kandidat dicoba, hanya yang menghasilkan jumlah kolom yang sama pada setiap baris yang bertahan, dan dari yang bertahan itu menang yang menghasilkan kolom terbanyak — konsistensi dulu, baru lebar. Satu jenis berkas bisa mengecoh aturan itu: bila setiap bidang pada setiap baris adalah angka dengan koma desimal, dan tidak ada header berisi nama yang memutus pola itu, koma juga memisah secara konsisten — dan menjadi lebih banyak kolom — sehingga mengalahkan pembatas yang sebenarnya. Karena itu pembatas yang terdeteksi selalu ditampilkan: periksa, dan timpa jika tebakannya salah.

Header dan bentuk keluaran

Dengan "baris pertama adalah header" menyala, baris itu memasok nama kunci dan keluarannya adalah larik objek — bentuk yang diharapkan hampir setiap API. Dengan opsi itu mati, tiap baris menjadi larik nilai, yang Anda inginkan untuk berkas yang langsung masuk ke data.

  • Baris dengan lebih sedikit bidang daripada header mendapat string kosong untuk kolom yang hilang, ketimbang kunci dengan nilai undefined.
  • Nama header duplikat dibuat unik (id, id_2, id_3) alih-alih saling menimpa, yang akan diam-diam membuang kolom.
  • Sel header kosong menjadi column_2, column_3, dan seterusnya, jadi tak ada kunci berupa string kosong.
  • Baris kosong dilewati, seperti yang dilakukan pengimpor lembar sebar — berkas yang ditempel sering diakhiri baris-baru tersasar, dan sebaris nilai kosong di sana tampak seperti bug.

Konversi tipe yang tak bisa kehilangan data

Setiap bidang CSV adalah teks. Mengonversi teks yang tampak numerik menjadi angka JSON biasanya adalah yang Anda inginkan — tetapi ia juga cara data diam-diam dihancurkan. Kode pos 01234 menjadi 1234. Nomor pesanan 20 digit menjadi float yang dibulatkan. Harga yang ditulis 1.50 kehilangan nol di ujungnya.

Aturan yang dipakai di sini menghindari semua itu tanpa daftar kasus khusus: nilai menjadi angka hanya jika mengubahnya kembali menjadi teks mereproduksi aslinya persis. 42 melakukannya, jadi ia dikonversi. 01234 tidak, jadi ia tetap string. Begitu pula 1.50, +5, 1e5, atau bilangan bulat apa pun yang melampaui titik saat double kehilangan presisi. String true dan false menjadi boolean; bidang kosong tetap string kosong ketimbang menjadi null, karena CSV tak bisa menyatakan perbedaan antara "tanpa nilai" dan "nilai kosong", dan mengarang salah satunya berarti mengarang informasi.

Kembali ke CSV

Di arah sebaliknya, larik objek menjadi tabel yang kolomnya adalah gabungan semua kunci, dalam urutan kemunculan pertamanya — jadi baris dengan kunci berbeda tetap sejajar, dan kunci yang hilang menghasilkan sel kosong. Larik dari larik ditulis baris demi baris. Pengutipan diterapkan hanya di tempat format mensyaratkannya: nilai yang mengandung pembatas, kutip, atau pemutus baris dibungkus, dengan kutip dalam digandakan.

Nilai yang tak bisa direpresentasikan CSV — objek atau larik bersarang — ditulis sebagai JSON di dalam selnya ketimbang diratakan atau dibuang, jadi tak ada yang lenyap dalam konversi. Null menjadi sel kosong.

Pertanyaan yang sering diajukan

Mengapa berkas saya keluar sebagai satu kolom raksasa?
Pembatasnya bukan yang dipakai alat. Itu biasanya berarti berkas titik koma (standar untuk Excel di lokal Eropa, tempat koma adalah pemisah desimal) atau ekspor yang dipisah tab. Deteksi biasanya menangkap ini — periksa pembatas mana yang ditampilkan, dan pilih yang lain dari menu tarik-turun jika ia menebak salah.
Mengapa ID saya masih string dalam JSON?
Karena mengonversinya akan mengubahnya. Angka dikonversi hanya ketika konversinya persis bisa dibalik, jadi 01234 mempertahankan nol di depannya dan ID panjang mempertahankan setiap digit. Jika Anda benar-benar menginginkannya sebagai angka, data Anda harus ditulis tanpa nol di depan, atau Anda bisa mengonversi setelahnya di tempat Anda mengendalikan presisi.
Apa yang terjadi pada koma dan kutip di dalam bidang?
Mereka dipertahankan. Saat masuk, bidang berkutip boleh mengandung koma, kutip ganda, dan bahkan baris-baru; saat keluar, nilai apa pun yang mengandung pembatas, kutip, atau pemutus baris dikutip dan kutip dalamnya digandakan. Nilai berpulang-pergi melalui CSV → JSON → CSV tanpa perubahan.
Apakah data saya dikirim ke server?
Tidak. Penguraian dan konversi berjalan sepenuhnya di peramban Anda, jadi daftar pelanggan, ekspor, dan laporan yang biasanya tersimpan dalam CSV tak pernah meninggalkan perangkat Anda.

Alat terkait