Apakah Yang Dilakukan Alat ini?
Alat ini menerima satu fail JSON – sama ada melalui butang muat naik atau seret dan lepas – lalu menukarnya menjadi fail CSV. Anda memilih delimiter output: koma (,), koma bertitik (;), atau tab (\t). Selepas muat naik, alat memaparkan pratinjau jadual yang terhasil, menunjukkan bilangan baris dan lajur, serta saiz fail output. Apabila anda berpuas hati, klik butang muat turun untuk mendapatkan fail CSV. Keseluruhan pemprosesan berlaku dalam pelayar anda – tiada data dihantar ke pelayan. Had saiz fail dikenakan: jika fail melebihi had maksimum, ralat “This file is too large. Use a file under ‹max›.” akan dipaparkan. Begitu juga, jika jadual melebihi had baris atau lajur, ralat masing‑masing “This table has more than ‹max› rows.” dan “This table has more than ‹max› columns.” akan muncul.
Perbezaan Utama: Dari JSON ke CSV
Arah penukaran ini meratakan format data berhierarki dan bertipe kepada jadual leper tanpa tipe. JSON menyokong objek, tatasusunan, nombor, boolean, dan null dalam struktur bersarang. CSV pula tidak mempunyai tipe, tiada penyarangan, dan tiada helaian berbilang. Penukaran ini menggugurkan semua maklumat tipe, struktur bersarang, dan format.
Untuk mewakili objek JSON bersarang dalam CSV yang leper, alat ini menggunakan tatatanda laluan titik (dot‑path notation). Contohnya, objek berikut:
{
"nama": "Ali",
"alamat": {
"bandar": "Kuala Lumpur",
"poskod": 50000
}
}
akan dijadikan dua lajur: nama dan alamat.bandar serta alamat.poskod. Setiap objek dalam tatasusunan menjadi satu baris. Jika tatasusunan mengandungi tatasusunan lain (array of arrays), setiap tatasusunan dalam akan menjadi baris dan elemennya menjadi lajur tanpa nama objek.
Oleh kerana CSV menggunakan delimiter, koma dan baris baharu yang terbenam dalam nilai mesti diletakkan dalam petikan – alat ini mengendalikannya secara automatik. Walau bagaimanapun, sifar pendahulu dalam nombor mungkin hilang. Contohnya, "00123" dalam JSON (string) akan dikekalkan, tetapi 00123 sebagai nombor akan menjadi 123 dalam CSV.
Jenis data tidak dikekalkan. Semua nilai menjadi rentetan (string) dalam CSV. Nombor, boolean, dan null semuanya ditukar menjadi perwakilan rentetan. Ini bermakna jika anda mengimport semula CSV tersebut ke dalam alat JSON, ia tidak akan memulihkan tipe asal. Objek bersarang yang tidak table‑shaped (misalnya objek tunggal di luar tatasusunan) tidak boleh ditukar.
Format JSON Yang Boleh Ditukar: “Table-shaped”
Alat ini hanya menerima JSON yang berbentuk jadual (table‑shaped). Ini bermakna struktur JSON mestilah sama ada:
- Tatasusunan objek (array of objects) – setiap objek menjadi satu baris, kunci objek menjadi lajur. Objek bersarang diratakan dengan laluan titik.
- Tatasusunan tatasusunan (array of arrays) – setiap tatasusunan dalam menjadi satu baris, elemen menjadi lajur tanpa kunci.
Contoh JSON table‑shaped (array of objects):
[
{"id": 1, "nama": "Ahmad"},
{"id": 2, "nama": "Siti"}
]
Contoh JSON bukan table‑shaped (objek tunggal):
{"id": 1, "nama": "Ahmad"}
Atau tatasusunan yang mengandungi campuran jenis:
[1, "teks", {"a": 1}]
Jika JSON tidak sah atau tidak berbentuk jadual, alat akan memaparkan ralat: “This JSON is invalid or not table‑shaped.” Keperluan ini wujud kerana CSV ialah format jadual dua dimensi – setiap baris mesti mempunyai bilangan lajur yang tetap (atau boleh ditentukan). Tatasusunan objek memastikan setiap baris mempunyai set kunci yang konsisten (walaupun ada kunci yang hilang, lajur kosong akan diisi).
Pemilihan Delimiter dan Peraturan CSV
Anda boleh memilih satu daripada tiga delimiter:
| Delimiter | Simbol | Kegunaan biasa |
|---|---|---|
| Koma | , |
Piawai kebanyakan sistem (Excel, Google Sheets, database) |
| Koma bertitik | ; |
Lokal Eropah yang mana koma digunakan sebagai pemisah perpuluhan |
| Tab | \t |
Mengelakkan konflik dengan koma dan baris baharu; sesuai untuk data berisi banyak koma |
Oleh kerana CSV menggunakan delimiter, alat ini secara automatik akan meletakkan petikan berganda (") di sekeliling mana‑mana nilai yang mengandungi:
- Delimiter yang dipilih
- Baris baharu (
\natau\r\n) - Petikan berganda (yang akan digandakan)
Kehilangan sifar pendahulu adalah isu biasa. Jika JSON mengandungi nombor seperti 0123, CSV akan menulis 123 kerana tiada konsep nombor dengan sifar pendahulu dalam format CSV. Jika perlu mengekalkan sifar, pastikan nilai dalam JSON adalah rentetan "0123", bukan nombor.
Had saiz fail, baris, dan lajur dikuatkuasakan untuk memastikan prestasi di pelayar. Apabila had dilanggar, ralat tertentu dipaparkan. Ralat lain yang mungkin: “Choose one file first.”, “Choose a CSV, JSON or XLSX file.”, “Choose a different output format.”, “Could not convert this file.”, “Conversion cancelled.”, dan “This conversion is taking too long. Try a smaller file.”
Semua ralat ini berpunca daripada logik pengesahan di sebelah pelanggan. Tiada komunikasi dengan pelayan semasa penukaran.
Privasi dan Pemprosesan Klien
Semua pemprosesan dilakukan sepenuhnya dalam pelayar anda menggunakan JavaScript. Fail JSON anda tidak dimuat naik ke mana‑mana pelayan. Ini bermakna:
- Data sensitif (misalnya maklumat peribadi, data kewangan, rahsia API) kekal dalam komputer anda.
- Tiada jejak data di pelayan.
- Penukaran berfungsi walaupun tanpa sambungan internet selepas halaman dimuatkan.
Keadaan ini berbeza dengan kebanyakan alat dalam talian yang menghantar fail ke pelayan untuk diproses. Untuk pengguna yang mementingkan privasi atau bekerja dengan data sulit, ciri ini adalah kelebihan utama. Walau bagaimanapun, kerana pemprosesan menggunakan sumber pelayar, fail yang sangat besar mungkin mengambil masa yang lama atau menyebabkan ralat tamat masa (“This conversion is taking too long. Try a smaller file.”).
Kesilapan dan Batasan Biasa
Berikut adalah kesilapan yang kerap dilakukan pengguna, beserta penjelasan:
- JSON bukan table‑shaped – Ramai cuba menukar objek tunggal atau tatasusunan bercampur. Alat hanya menerima tatasusunan objek atau tatasusunan tatasusunan. Pastikan data anda dalam format tersebut.
- Kehilangan jenis data – Selepas penukaran, nombor, boolean, dan
nullmenjadi rentetan. Jika anda merancang untuk mengimport semula CSV ke sistem lain, sedar bahawa tipe asal tidak dipulihkan. - Sifar pendahulu hilang – Nombor seperti
001menjadi1. Gunakan rentetan jika perlu mengekalkan sifar. - Objek bersarang yang kompleks – Alat hanya meratakan satu peringkat menggunakan laluan titik. Jika terdapat objek bersarang di dalam tatasusunan, ia akan menjadi lajur dengan nama seperti
objek1.objek2.lapangan. Ini boleh menghasilkan jadual yang sangat lebar. - Pratonton tidak selari dengan muat turun – Kadangkala pratonton menunjukkan jadual yang berbeza daripada fail yang dimuat turun? Ini jarang berlaku, tetapi jika delimiter berubah, pratonton akan dikemas kini. Sentiasa semak pratonton sebelum muat turun.
- Penukaran mengambil masa terlalu lama – Fail JSON yang sangat besar (ribuan baris dengan beratus lajur) mungkin mengambil masa beberapa saat. Jika terlalu lama, cuba bahagikan fail kepada bahagian yang lebih kecil.
Soalan Lazim (FAQ)
1. Kenapa nombor saya hilang sifar pendahulu?
CSV tidak mempunyai jenis data; semua nilai disimpan sebagai teks. Jika JSON mengisytiharkan 00123 sebagai nombor (tanpa petikan), sistem akan menulisnya sebagai 123. Untuk mengekalkan sifar pendahulu, pastikan nilai dalam JSON ditulis sebagai rentetan, contohnya "00123".
2. Bolehkah saya menukar JSON yang mempunyai objek bersarang dalam?
Ya, tetapi objek bersarang akan diratakan menggunakan tatatanda laluan titik, contohnya alamat.bandar. Setiap peringkat penyarangan akan ditambah sebagai lajur baharu. Jadual mungkin menjadi sangat lebar jika penyarangan terlalu dalam.
3. Apa itu delimiter dan yang mana satu patut saya pilih?
Delimiter ialah aksara yang memisahkan lajur dalam fail CSV. Koma adalah piawai untuk kebanyakan aplikasi. Koma bertitik digunakan di negara yang mana koma adalah pemisah perpuluhan. Tab berguna jika data anda banyak mengandungi koma atau koma bertitik. Pilih delimiter yang difahami oleh aplikasi yang akan membuka fail CSV anda.
4. Adakah fail saya dihantar ke pelayan semasa penukaran?
Tidak. Semua pemprosesan dilakukan dalam pelayar anda. Fail JSON anda tidak pernah meninggalkan komputer anda. Ini menjamin privasi data.
5. Kenapa saya dapat ralat “This JSON is invalid or not table‑shaped.”?
Ralat ini muncul apabila JSON anda tidak memenuhi syarat: mestilah satu tatasusunan objek atau tatasusunan tatasusunan. Contohnya, objek tunggal, tatasusunan bercampur, atau JSON yang tidak sah akan menghasilkan ralat ini. Semak semula struktur fail JSON anda.
6. Bolehkah saya menukar JSON yang mengandungi tatasusunan di dalam objek?
Ya. Contohnya, jika objek mempunyai lajur hobi yang berupa tatasusunan rentetan, tatasusunan itu akan dianggap sebagai satu nilai rentetan (dipetik dan digabung). Alat tidak akan mengembang tatasusunan menjadi baris berbilang. Setiap baris dalam output sepadan dengan satu objek dalam tatasusunan induk.