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 yang diserahkan lembar sebar, ekspor basis data, dan dasbor analitik kepada Anda; JSON adalah yang diinginkan API dan kode. Alat ini mengonversi antara keduanya di kedua arah, di browser Anda. Tempel CSV dan Anda mendapatkan larik JSON — objek berkunci baris header, atau larik polos ketika data tak punya header. Balik arah dan sebuah larik JSON menjadi CSV, dengan setiap nilai dikutip persis sebanyak yang dibutuhkannya.

Pekerjaannya 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 jelas membaca CSV — memecah tiap baris pada koma — rusak pada berkas nyata, karena format itu punya mekanisme escape. Sebuah bidang yang dibungkus kutip ganda boleh mengandung pembatas, sebuah kutip harfiah yang ditulis sebagai dua kutip berturut, atau bahkan pemutus baris, dalam hal ini satu catatan merentang beberapa baris berkas. Alat ini mengimplementasikan aturan sesungguhnya (RFC 4180) dengan pengurai karakter demi karakter, jadi ketiga kasus datang utuh.

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

Keempat catatan itu punya dua bidang masing-masing, meski ada koma, kutip, dan baris-baru tambahan. Jika pengutipan cacat — sebuah bidang membuka sebuah 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 bukan begitu. Dalam lokal tempat koma adalah pemisah desimal — sebagian besar Eropa daratan — Excel mengekspor dengan titik koma, karena 1,50 adalah sebuah 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 hanya-koma menghasilkan satu kolom yang sangat lebar, frustrasi CSV paling umum yang ada.

Jadi pembatasnya dideteksi ketimbang diasumsikan. Tiap kandidat dicoba, dan pemenangnya adalah yang menghasilkan jumlah kolom yang sama pada setiap baris — konsistensi, bukan hitungan tertinggi, karena sebuah berkas penuh koma desimal jika tidak akan tampak dipisah-koma. Pembatas yang terdeteksi selalu ditampilkan, dan Anda bisa menimpanya 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 hampir setiap API harapkan. Dengan ia mati, tiap baris menjadi larik nilai, yang Anda inginkan untuk berkas yang langsung masuk ke data.

  • Sebuah 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.
  • Sebuah 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 — sebuah 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. Sebuah kode pos 01234 menjadi 1234. Sebuah nomor pesanan 20-digit menjadi float yang dibulatkan. Sebuah harga yang ditulis 1.50 kehilangan nol di ujungnya.

Aturan yang dipakai di sini menghindari semua itu tanpa daftar kasus khusus: sebuah 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 melampaui titik saat double kehilangan presisi. String true dan false menjadi boolean; sebuah bidang kosong tetap string kosong ketimbang menjadi null, karena CSV tak bisa mengungkapkan perbedaan antara "tanpa nilai" dan "nilai kosong", dan menciptakan satu berarti menciptakan informasi.

Kembali ke CSV

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

Nilai yang tak bisa direpresentasikan CSV — sebuah objek atau larik bersarang — ditulis sebagai JSON di dalam selnya ketimbang diratakan atau dibuang, jadi tak ada yang lenyap dalam sebuah 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 sebuah bidang?
Mereka dipertahankan. Saat masuk, sebuah bidang berkutip boleh mengandung koma, kutip ganda, dan bahkan baris-baru; saat keluar, nilai apa pun yang mengandung pembatas, sebuah kutip, atau sebuah pemutus baris dikutip dan kutip dalamnya digandakan. Sebuah nilai berpulang-pergi melalui CSV → JSON → CSV tanpa perubahan.
Apakah data saya diunggah ke mana pun?
Tidak. Penguraian dan konversi berjalan sepenuhnya di browser Anda, jadi daftar pelanggan, ekspor, dan laporan yang biasanya tinggal dalam CSV tak pernah meninggalkan perangkat Anda.