Mengapa mengubah spreadsheet menjadi JSON
CSV adalah format ekspor spreadsheet, CRM, bank, dan dasbor analitik. JSON adalah format yang dikonsumsi API web, kode JavaScript, database NoSQL, dan sebagian besar sistem konfigurasi. Konversi ini terus-menerus dibutuhkan: mengisi database uji dari sheet yang dikelola rekan kerja, mengubah daftar produk menjadi fixture untuk prototipe front-end, memasukkan daftar redirect atau terjemahan ke skrip build, atau mengirim sekumpulan record ke API yang hanya menerima JSON.
Hasilnya di sini adalah array JSON dengan satu objek per baris data. Baris header menyediakan nama properti, jadi sheet dengan kolom sku, title, dan price menjadi objek dengan tepat tiga kunci itu, siap untuk di-loop.
Cara parser membaca CSV Anda
CSV terlihat sepele sampai sebuah nilai berisi karakter pemisah. Parser mengikuti aturan RFC 4180, yang paling mendekati standar untuk CSV:
- Field yang diapit tanda kutip ganda boleh berisi pemisah, baris baru, dan tanda kutip.
"Smith, John"tetap menjadi satu nilai. - Tanda kutip di dalam field berkutip ditulis dua kali:
"6"" pipe"menjadi6" pipe. - Baris boleh diakhiri CRLF gaya Windows atau LF gaya Unix; keduanya ditangani.
- Byte order mark di awal, yang ditambahkan Excel saat menyimpan sebagai CSV UTF-8, dihapus agar tidak menempel pada nama kolom pertama.
- Baris yang benar-benar kosong dilewati.
Pemisah dipilih dengan menghitung koma, titik koma, tab, dan garis vertikal di baris pertama, lalu mengambil yang paling sering muncul. Cara ini berhasil untuk hampir semua ekspor, tetapi bergantung pada header yang representatif. Jika header hanya berisi satu kolom tanpa pemisah, koma yang diasumsikan.
Spasi di sekitar nama header dipangkas, jadi price menjadi kunci price. Nilai di baris data dipertahankan persis seperti tertulis, termasuk spasi di awal atau akhir.
Nilai bertipe versus string
Dengan "Deteksi angka dan boolean" diaktifkan, setiap sel dicek dengan daftar aturan singkat:
- Bilangan bulat dan desimal biasa seperti
42,-7, dan19.99menjadi angka JSON, selama jumlah digitnya paling banyak 15. - Tepat
truedanfalse, dalam huruf kecil, menjadi boolean.TRUE,Yes, atau1tetap apa adanya. - Sel kosong menjadi
null. - Selebihnya, termasuk deretan digit yang lebih panjang,
1.5e3,+5,.5,1,234, dan tanggal, tetap berupa string.
Ini praktis untuk sebagian besar data, tetapi angka di JSON tidak membawa format, jadi beberapa nilai berubah makna saat diberi tipe:
- Nol di depan hilang. Kode pos AS
02134menjadi2134, dan nomor artikel007menjadi7. - Deretan digit panjang akan kehilangan presisi. Angka JavaScript hanya akurat hingga sekitar 15 digit signifikan, jadi nilai dengan lebih banyak digit, seperti ID pesanan 20 digit atau nomor kartu, dipertahankan sebagai string alih-alih dibulatkan.
- Nomor telepon tanpa tanda plus atau spasi juga menjadi angka.
Jika ada kolom yang berisi pengenal, bukan kuantitas, matikan opsi ini dan konversikan beberapa field yang memang numerik di kode Anda sendiri. Dengan opsi dimatikan, sel kosong menjadi string kosong, bukan null.
Saat hasilnya terlihat salah
- Semua masuk ke satu kunci. Pemisah tidak terdeteksi, biasanya karena header memakai pemisah yang berbeda dari data, atau tidak ada pemisah sama sekali. Periksa baris pertama.
- Nilai bergeser satu kolom. Sebuah field berisi pemisah tetapi tidak dikutip. Ekspor ulang dari aplikasi sumber alih-alih mengedit manual; spreadsheet otomatis mengutip field seperti itu.
- Kolom tambahan hilang. Kunci hanya diambil dari header, jadi sel di luar kolom header terakhir dibuang. Baris dengan sel lebih sedikit mendapat
nullatau string kosong untuk yang hilang. - Dua kolom, satu kunci. Jika header mengulang sebuah nama, kolom yang belakangan menimpa yang lebih awal di setiap objek. Ganti nama salah satunya dulu.
- Karakter aneh seperti é. File disimpan dalam encoding lama. Simpan ulang sebagai CSV UTF-8 lalu tempel sekali lagi.
Bekerja dengan hasilnya
JSON dicetak dengan indentasi 2 spasi, yang nyaman untuk dibaca dan di-commit ke repositori. Untuk me-minify-nya bagi request API atau mengubah indentasinya, proses dengan formatter JSON. Untuk kembali ke arah sebaliknya setelah diedit, JSON ke CSV membangun ulang sheet dari array. Konversi berjalan sepenuhnya di dalam halaman, yang penting jika ekspor berisi nama pelanggan, email, atau gaji.