Perbezaan Utama Halaman Ini
Halaman ini menukar CSV kepada JSON. Terdapat tiga ciri yang menjadikannya berbeza daripada halaman saudara seperti json-to-csv atau excel-to-json.
Pertama, tiada jenis data dalam sumber, semua kekal rentetan. CSV menyimpan segala-galanya sebagai teks rata — nombor, tarikh, nilai Boolean, semuanya dianggap rentetan. Apabila anda menukar CSV ke JSON, setiap sel akan menjadi nilai rentetan dalam output. Harga RM49.90 tidak akan menjadi nombor 49.9; tarikh "2024-12-01" tidak akan menjadi objek Date; poskod "01234" akan kekal sebagai rentetan "01234" dan bukan nombor 1234. Ini adalah sifat asas CSV yang tidak boleh diubah oleh alat ini. Jika anda memerlukan jenis data tertentu, anda mesti mengubahnya secara manual selepas muat turun.
Kedua, tiada struktur bersarang. CSV adalah jadual rata — baris dan lajur. Oleh itu, setiap baris menjadi satu objek JSON yang rata, dengan kunci yang sama untuk semua baris. Anda tidak boleh menghasilkan JSON dengan objek dalam objek (seperti senarai pesanan yang mengandungi tatasusunan item) daripada CSV tanpa peraturan tambahan yang tidak disediakan oleh alat ini. Ini berbeza dengan penukaran arah songsang (JSON ke CSV) yang perlu meratakan struktur bersarang.
Ketiga, delimiter sangat penting. Anda mesti memilih sama ada fail CSV anda menggunakan koma, koma bertitik, atau tab. Kesilapan memilih delimiter adalah punca utama kegagalan penghuraian.
Selain itu, petikan dan baris baharu dalam CSV adalah rapuh. Peraturan petikan CSV tidak selalu dipatuhi; koma terbenam dalam medan berpetik, baris baharu dalam sel, dan petikan tidak terlepas adalah punca biasa kegagalan penghuraian yang lebih kerap berlaku dalam penukaran CSV ke JSON berbanding penukaran format lain.
Cara Kerja Penukaran CSV ke JSON
Proses penukaran adalah lurus: alat membaca fail CSV, mengesan delimiter yang dipilih, menghuraikan baris pertama sebagai pengepala lajur, dan setiap baris berikutnya sebagai objek. Objek-objek ini dikumpulkan dalam tatasusunan, dan kemudian disimpan sebagai fail JSON.
Langkah-langkah terperinci:
- Pilih fail: Seret fail CSV ke kawasan yang disediakan, atau klik untuk memilih dari peranti anda.
- Tetapkan pilihan pengguna: Pilih delimiter yang betul. Lalai adalah koma.
- Pratonton dan sahkan: Alat memaparkan pratonton data yang telah ditukar (8 baris dan 8 lajur pertama), bilangan baris dan lajur dalam jadual, dan saiz fail output. Ini memberi peluang untuk mengesan masalah sebelum muat turun.
- Muat turun: Setelah berpuas hati, klik butang muat turun untuk mendapatkan fail JSON.
Output JSON akan kelihatan seperti:
[
{
"Nama": "Ali bin Ahmad",
"Umur": "30",
"Bandar": "Kuala Lumpur"
},
{
"Nama": "Siti binti Ismail",
"Umur": "25",
"Bandar": "Johor Bahru"
}
]
Perhatikan bahawa "Umur" kekal sebagai rentetan "30", bukan nombor 30. Ini adalah tingkah laku yang disengajakan.
Memahami Delimiter dan Peraturan Petikan
Delimiter — aksara yang memisahkan sel dalam CSV — adalah koma (,), koma bertitik (;), atau tab (\t). Pilihan yang salah akan menyebabkan alat membaca satu sel sebagai beberapa sel, atau sebaliknya.
| Delimiter | Contoh Baris CSV |
|---|---|
| Koma | Nama,Umur,Bandar |
| Koma bertitik | Nama;Umur;Bandar |
| Tab | Nama\tUmur\tBandar |
Peraturan petikan (quoting rules) adalah penting apabila nilai mengandungi delimiter, baris baharu, atau petikan. Dalam CSV standard (RFC 4180), medan yang mengandungi koma mesti diapit dengan petikan berganda ("). Petikan berganda dalam medan dinyah dengan menggandakannya ("").
Contoh: "Ali, bin Ahmad","30","Kuala Lumpur"
Baris baharu dalam sel juga mesti diapit petikan. Alat ini dapat mengendalikan baris baharu seperti itu, dan ia akan dipelihara sebagai dalam nilai rentetan JSON.
Walau bagaimanapun, peraturan petikan tidak selalu diikuti dalam fail CSV sebenar. Fail yang dihasilkan oleh sistem lama atau aplikasi bukan piawai mungkin tidak mematuhi RFC 4180. Ini menyebabkan ralat penghuraian. Jika alat tidak dapat menghurai CSV, ia akan memaparkan mesej: "This CSV could not be parsed."
Kesalahan biasa termasuk:
- Petikan tidak seimbang (satu petikan buka tanpa tutup)
- Petikan berganda dalam medan tidak dinyah dengan betul
- Baris baharu tanpa petikan dalam sel
Jenis Data dan Sifir Pendahuluan
Seperti yang dinyatakan, semua nilai dalam CSV adalah rentetan. Alat ini tidak cuba meneka jenis data. Ini adalah pilihan reka bentuk yang penting kerana:
- Nombor seperti harga, kuantiti, atau kod produk akan kekal sebagai rentetan. Jika anda memerlukan nombor, anda boleh menukarnya selepas muat turun menggunakan fungsi
parseFloat()atauNumber()dalam JavaScript, atau dalam alat lain. - Sifir pendahuluan (leading zeros) — seperti poskod "01234" atau kod stok "00123" — dikekalkan. Ini adalah kelebihan besar berbanding banyak alat lain yang secara automatik menukar "01234" kepada nombor 1234, menyebabkan kehilangan data. Dengan alat ini, sifir pendahuluan kekal utuh.
- Tarikh tidak ditukar kepada objek Date. "2024-12-01" kekal sebagai rentetan "2024-12-01". Ini memberi anda kawalan penuh ke atas pemformatan tarikh dalam JSON.
- Nilai kosong dalam CSV akan menjadi rentetan kosong
""dalam JSON, bukannullatauundefined. - Baris baharu dalam medan dikekalkan sebagai
dalam rentetan. Contohnya, alamat berbilang baris akan kelihatan seperti"Jalan Merdeka Taman Bahagia 50480 Kuala Lumpur".
Implikasi: Jika anda memuatkan JSON yang dihasilkan ke dalam persekitaran yang mengautomasi jenis data (seperti JavaScript dengan JSON.parse biasa), semua nilai kekal sebagai rentetan. Anda perlu mengubah jenis data secara eksplisit. Jika persekitaran anda melakukan auto-typing (seperti MongoDB Compass atau beberapa perpustakaan), sifir pendahuluan mungkin hilang. Oleh itu, penting untuk menyemak tingkah laku persekitaran sasaran anda.
Kesalahan Lazim dan Had Penggunaan
Kesalahan lazim:
- Salah delimiter: Pengguna sering terlupa untuk menukar delimiter daripada koma kepada koma bertitik apabila fail berasal dari sistem yang menggunakan koma bertitik (contohnya dari Excel versi Eropah). Ini menyebabkan setiap baris dibaca sebagai satu sel tunggal.
- Baris dengan bilangan lajur tidak konsisten: Jika fail CSV mempunyai baris yang mempunyai lebih atau kurang lajur daripada pengepala, alat mungkin gagal menghurai atau menghasilkan data yang tidak tepat. Walau bagaimanapun, alat ini akan cuba mengendalikan variasi kecil; jika gagal, ia akan memaparkan ralat.
- Petikan tidak terlepas: Fail CSV yang tidak mematuhi standard petikan (contohnya, petikan tunggal digunakan dan bukannya petikan berganda, atau petikan dalam medan tidak digandakan) akan menyebabkan ralat.
- Fail mengandungi data bukan jadual: Kadangkala fail CSV mempunyai baris metadata atau nota di atas jadual. Alat ini tidak mengendalikan baris tersebut; ia hanya menghuraikan data bermula dari baris pertama.
Had alat:
| Had | Mesej Ralat |
|---|---|
| Tiada baris data (fail kosong atau hanya pengepala) | "This file has no table rows." |
| Lebih daripada 10,000 baris | "This table has more than ‹max› rows." |
| Lebih daripada 200 lajur | "This table has more than ‹max› columns." |
| Saiz fail melebihi 8 MB | "This file is too large. Use a file under ‹max›." |
| Tiada fail dipilih | "Choose one file first." |
| Jenis fail salah (bukan CSV, JSON, atau XLSX) | "Choose a CSV, JSON or XLSX file." |
| Penukaran mengambil masa lebih daripada 12 saat | "This conversion is taking too long. Try a smaller file." |
Privasi dan Pemprosesan Sisi Klien
Semua penukaran berlaku di dalam pelayar anda. Tiada fail yang dihantar ke pelayan. Ini bermakna data sensitif — seperti senarai pelanggan, rekod kewangan, atau maklumat peribadi — tidak meninggalkan peranti anda. Alat ini sesuai untuk sesiapa yang perlu menukar data sulit tanpa mendedahkannya kepada pihak ketiga.
Proses ini bergantung sepenuhnya kepada JavaScript di sisi klien. Fail dibaca, dihuraikan, dan fail JSON dihasilkan serta dimuat turun. Tiada panggilan rangkaian, tiada storan awan, tiada log.
Implikasi privasi:
- Anda boleh menukar fail peribadi dengan selamat tanpa kebimbangan pematangan data.
- Alat ini berfungsi sepenuhnya di luar talian selepas halaman dimuatkan, asalkan anda tidak memuat semula halaman.
- Saiz fail yang lebih besar mungkin mengambil masa kerana pemprosesan di pelayar.
Soalan Lazim (FAQ)
1. Adakah alat ini akan menukar nombor seperti "30" kepada nombor sebenar dalam JSON?
Tidak. Semua nilai dalam CSV dianggap sebagai rentetan. "30" akan kekal sebagai "30" dalam JSON. Jika anda memerlukan nombor, anda perlu menukarnya secara manual selepas muat turun menggunakan fungsi seperti Number() atau parseFloat(). Ini adalah pilihan reka bentuk untuk mengelakkan kehilangan data (contohnya sifir pendahuluan).
2. Bagaimana jika fail CSV saya menggunakan koma bertitik (;) sebagai pemisah? Anda mesti memilih "Koma bertitik" (Semicolon) sebagai delimiter sebelum memulakan penukaran. Jika tidak, alat akan menganggap setiap baris mengandungi hanya satu sel. Pilihan delimiter ada di antara muka pengguna.
3. Bolehkah saya menukar fail CSV yang mengandungi baris baharu dalam sel?
Ya, selagi baris baharu tersebut diapit dengan petikan berganda mengikut standard CSV. Alat ini akan memelihara baris baharu sebagai aksara dalam rentetan JSON. Jika baris baharu tidak diapit petikan, penghuraian mungkin gagal.
4. Mengapa JSON output saya mempunyai sifir pendahuluan seperti "01234" sedangkan saya mahu nombor 1234? Kerana alat ini tidak mengubah jenis data. Semua nilai adalah rentetan. Jika anda mahu nombor 1234, anda boleh menggunakan alat lain atau mengubah suai JSON secara manual. Namun, kebanyakan pengguna menghargai pemeliharaan sifir pendahuluan untuk kod pos atau ID produk.
5. Apakah yang perlu saya lakukan jika alat memaparkan "This CSV could not be parsed."? Periksa sama ada delimiter yang dipilih betul. Periksa sama ada fail CSV anda mempunyai petikan yang seimbang dan konsisten (setiap petikan buka mesti ada petikan tutup). Kadangkala membuka fail dalam editor teks dan menyemak aksara tersembunyi (seperti petikan yang tidak lengkap) boleh membantu. Jika masalah berterusan, cuba eksport semula fail CSV dari sumber asal dengan pilihan yang lebih standard.
6. Adakah alat ini boleh mengendalikan fail dengan 100,000 baris? Alat ini mempunyai had 10,000 baris, 200 lajur, dan had saiz fail 8 MB. Jika fail anda melebihi had tersebut, mesej ralat akan dipaparkan.