Konversi CSV ke JSON dan sebaliknya tanpa merusak data
CSV adalah tabel teks biasa: satu rekaman per baris, dengan field dipisahkan oleh pemisah, biasanya koma. Format ini rusak ketika sebuah field berisi pemisah, tanda kutip ganda, atau pergantian baris, karena pembaca harus bisa membedakan struktur dari isi. Ikuti aturan pengutipan, periksa pemisah dan baris header, dan simpan angka dengan nol di depan sebagai teks. Sisa artikel ini membahas apa yang bisa dan tidak bisa dipertahankan saat konversi bolak-balik (round trip).
CSV ke JSONPerlu CSV jadi JSON, atau sebaliknyaPakai gratisApa sebenarnya file CSV itu
CSV tidak memiliki standar tunggal yang berwenang, tetapi RFC 4180 menjelaskan bentuk umumnya, dan sebagian besar pembaca mengikutinya. Aturan intinya muat dalam daftar pendek:
- Setiap rekaman berada di barisnya sendiri, dan RFC menyebut baris diakhiri carriage return dan line feed, CRLF.
- Field dipisahkan oleh koma.
- Field yang berisi koma, tanda kutip ganda, atau pergantian baris diapit tanda kutip ganda.
- Tanda kutip ganda di dalam field yang diapit ditulis sebagai dua tanda kutip ganda.
Jadi baris 1001,"Smith, Ann",02134 memiliki tiga field, karena koma di dalam tanda kutip adalah isi. Pemisah yang memotong di setiap koma akan menemukan empat. Pembaca fixmint menerapkan aturan ini: field yang diapit tanda kutip boleh berisi pemisah, pergantian baris, dan tanda kutip ganda yang digandakan. Tanda kutip yang tidak tertutup dilaporkan beserta baris tempat ia dimulai.
Mengapa pemisah bisa berubah
Koma adalah default RFC, tetapi ketika koma menjadi tanda desimal, sehingga 1,5 berarti satu setengah, spreadsheet sering menyimpan CSV dengan titik koma. File yang dipisahkan tab (TSV) menghindari konflik ini pada sebagian besar data, karena tab jarang muncul di dalam teks.
Menu Pemisah menawarkan Otomatis, Koma, Titik koma, Tab, dan Pipa. Otomatis membaca sepuluh baris pertama, menghitung setiap kandidat di luar tanda kutip, dan memilih yang jumlahnya per baris paling konsisten. Pilih pemisah sendiri ketika Otomatis menebak keliru.
Mengonversi di fixmint
Contoh kerja berikut memakai opsi default dari alat CSV ke JSON.
Contoh kerja
Tempel CSV berikut, dengan Baris pertama adalah header dicentang:
id,name,zip,note
1001,"Smith, Ann",02134,"She said ""hi"""
1002,Bo,10001,"line one
line two"
Dengan Konversi angka nonaktif dan Indentasi JSON diatur 2 spasi, alat mengembalikan:
[
{
"id": "1001",
"name": "Smith, Ann",
"zip": "02134",
"note": "She said \"hi\""
},
{
"id": "1002",
"name": "Bo",
"zip": "10001",
"note": "line one\nline two"
}
]
Dengan Konversi angka aktif, id dan zip 10001 menjadi angka, sedangkan 02134 tetap teks.
Langkah-langkah
- Tempel CSV, atau seret file .csv, .tsv, .txt, atau .json.
- Periksa Baris pertama adalah header, Pemisah, dan Konversi angka. Pilih indentasi JSON 2 spasi, Tab, atau Minified.
- Salin hasilnya, atau unduh sebagai .json.
Simpan angka sebagai teks
Angka JSON tidak boleh memiliki nol di depan, jadi 02134 bukan angka JSON yang valid. Kode pos, nomor telepon, dan kode produk harus tetap berupa teks, atau nolnya hilang. Dengan Konversi angka aktif, alat mengubah 10001 tetapi menyimpan 02134 sebagai string. Opsi ini nonaktif secara default. Opsi ini hanya mengonversi nilai yang menggunakan titik sebagai tanda desimal, sehingga 1,5 pada file titik koma tetap seperti yang diketik.
Pengenal panjang juga perlu kehati-hatian. JavaScript, yang menjalankan sebagian besar JSON di browser, menyimpan angka sebagai nilai floating-point 64-bit. Bilangan bulat hanya tepat hingga 9,007,199,254,740,991, yaitu 2 pangkat 53 dikurangi 1. Angka 12345678901234567890 menjadi 12345678901234567000 ketika program JavaScript membacanya. Alat menulis digit persis seperti yang diketik, tetapi program yang mengurai JSON dengan JavaScript akan membulatkannya. Simpan ID sebagai string. Pemformat JSON juga menyimpan angka seperti itu persis seperti yang diketik, dan memberi tahu berapa banyak yang disimpannya.
JSON bersarang dan kembali ke CSV
CSV bersifat datar, sedangkan JSON bisa bersarang. Mengonversi JSON ke CSV membuat satu kolom untuk setiap kunci di seluruh objek, sesuai urutan kemunculan pertama setiap kunci. Objek atau daftar bersarang masuk ke selnya sebagai teks JSON, null menjadi sel kosong, dan true serta false ditulis sebagai kata. Baris dipisahkan dengan CRLF, dan field hanya diberi tanda kutip ketika berisi pemisah, tanda kutip, pergantian baris, atau spasi di salah satu ujungnya.
Input yang diawali [ atau { dibaca sebagai JSON. Tombol chip mengganti arah konversi, berlabel CSV → JSON atau JSON → CSV. Pada arah JSON → CSV, opsi keluaran menampilkan menu Pemisah dan opsi Untuk Excel.
Konversi bolak-balik kehilangan informasi. null dan string kosong sama-sama menjadi sel kosong, dan struktur bersarang tidak kembali, jadi simpan JSON asli jika Anda memerlukan strukturnya.
Excel, UTF-8, dan byte order mark
File CSV adalah byte, dan pembaca harus tahu encoding-nya. UTF-8 mampu menampung huruf beraksen dan alfabet lain. Byte order mark (BOM), tiga byte di awal file, menandai file sebagai UTF-8. Tanpa BOM, sebagian program spreadsheet membaca file dengan code page lokal, dan huruf beraksen berubah menjadi karakter aneh. Spreadsheet juga sering mengubah 02134 menjadi 2134 saat membuka CSV.
Opsi Untuk Excel hanya menambahkan BOM ke CSV yang diunduh, tidak pernah ke teks yang disalin, dan hanya pada arah JSON → CSV. Pembaca menghapus BOM dari input, jadi file yang sudah memilikinya tetap terkonversi tanpa error.
Kasus khusus
- Baris tidak seragam. Dengan header aktif, baris pendek diisi nilai kosong, dan baris yang lebih panjang menyimpan nilai ekstranya sebagai column_N. Hasilnya melaporkan berapa banyak baris yang berbeda dari header.
- Header berulang atau kosong. Nama yang berulang mendapat _2, _3, dan seterusnya, dan nama kosong menjadi column_N. Kedua perubahan ini mencegah dua kunci saling menimpa.
- Tanda kutip melengkung. Tanda kutip pintar dari pengolah kata bukan tanda kutip CSV, sehingga field seperti “Smith, Ann” terpotong di komanya. Luruskan dulu dengan Perbaiki teks tempel atau seperti dijelaskan di panduan tanda kutip melengkung.
- Pergantian baris di dalam tanda kutip. Field yang membentang dua baris adalah satu rekaman, tetapi Hapus baris duplikat memecah input di setiap pergantian baris, sehingga kedua bagian dianggap sebagai baris terpisah. Konversi ke JSON dan bandingkan objeknya, atau periksa secara manual. Alat ini tetap berguna untuk daftar satu nilai per baris.
- File besar. Kotak hasil menampilkan 100,000 karakter pertama, tetapi Salin dan unduhan menyertakan seluruh keluaran.
- JSON tidak valid. Konverter melaporkan baris dan kolom kesalahan, dengan tanda caret di bawah karakter tersebut. Pemformat JSON menjelaskan kesalahan umum, dan panduan kesalahan JSON membahasnya lebih rinci.
Spasi liar di sekitar field, baris kosong di tengah file, dan tanda kutip yang dipakai tidak konsisten menyebabkan sebagian besar masalah CSV, jauh sebelum pemisah menjadi soal. Bersihkan CSV terlebih dahulu, lalu konversi.
Diterjemahkan dari Asli dalam bahasa Inggris dengan bantuan AI.
Komentar
Belum ada komentar. Jadilah yang pertama.


