CSV ke JSON Kapan harus dikonversi dan bagaimana menjaga kebersihan data Anda
Sebagian besar file CSV tiba dalam keadaan kacau. Mereka memiliki sel kosong di mana nilai nol seharusnya ada, kutipan yang tidak konsisten, dan tidak ada skema yang diperkuat. Mengubahnya menjadi JSON yang bersih bukan perubahan format — ini adalah masalah pembersihan data.
Panduan ini membahas kapan harus beralih, apa yang salah terjadi selama konversi, dan bagaimana menangani kasus-kasus ekstrem secara tepat — baik dengan cara cepat Pengubah CSV ke JSON atau skrip khusus.
CSV versus JSON: Pertukaran yang Jujur
CSV lebih ringkas, dapat dibaca secara universal, dan mudah diimpor ke spreadsheet. Untuk data tabel datar — ekspor dari database, pipeline analitik, catatan keuangan — format ini masih tepat. Jika data Anda sesuai dengan baris dan kolom tanpa hierarki, maka CSV cukup.
JSON menjadi pilihan yang lebih baik ketika:
- Data Anda memiliki struktur atau hierarki (seorang pengguna dengan beberapa alamat)
- Anda membutuhkan informasi tipe eksplisit (angka 42 dibandingkan string '42')
- Anda menyediakan data ke API atau aplikasi JavaScript
- Anda ingin nilai null diwakili secara eksplisit, bukan hanya sel kosong
Pertukaran ini bukan tentang mana format yang 'lebih baik'. Ini tentang apakah struktur data Anda melebihi kemampuan CSV dalam merepresentasikan data tersebut.
Masalah yang Dibuat oleh CSV
Sebelum Anda mengonversi, Anda perlu memahami apa yang rusak.
Tidak ada standar untuk nilai nol. Sel kosong dalam CSV bisa berarti nilai nol, angka nol, string kosong, atau data yang hilang. Tidak ada cara untuk mengetahui dari file tersebut. Kolom kosong mungkin berarti 'tidak diketahui' di satu sistem dan '0' di sistem lain. age Kutipan yang tidak konsisten.
Nilai yang mengandung koma seharusnya dilindungi dengan kutipan ganda ( ), tetapi tidak semua eksporter mengikuti spesifikasi. Anda akan menemukan koma tanpa kutipan, kutipan yang tidak sesuai, dan sel yang membuka kutipan tetapi tidak menutupnya."Portland, OR"Masalah encoding.
File CSV sering datang dengan BOM UTF-8, karakter Windows-1252, atau kombinasi keduanya. Kutipan cerdas, garis em, dan karakter berat semua mengganggu parser yang mengharapkan ASCII bersih. Tidak ada informasi tipe.
Setiap nilai dalam CSV disimpan sebagai string. Angka 42, nilai benar, dan tanggal 2024-01-01 semuanya disimpan sebagai teks. Konversi secara otomatis ke JSON menghasilkan dokumen yang penuh dengan string yang seharusnya menjadi angka dan nilai boolean. Cara Mengonversi Secara Tepat
Mekanisme ini sederhana: setiap baris CSV menjadi objek JSON, dengan header kolom sebagai kunci. Masalahnya adalah semua hal yang terjadi sebelum dan sesudah peta tersebut.
Pemaksaan tipe.
Kolom yang penuh dengan angka seharusnya menjadi angka JSON. Kolom dengan nilai 'benar'/'salah' seharusnya menjadi nilai boolean. Namun, kolom kode pos yang tampaknya angka (90210) sebaiknya tetap sebagai string — konversi ini menghancurkan nol di awal. Pengelolaan nilai nol.
Sel kosong membutuhkan keputusan: dikonversi ke , diabaikan secara keseluruhan, atau menggunakan nilai default. Pilih satu dan konsisten di seluruh baris. nullKolom yang hilang.
Jika satu baris memiliki jumlah kolom kurang dari header, parser Anda perlu menangani hal ini secara halus — baik dengan mengisi dengan atau mengabaikan baris tersebut. null Berikut adalah potongan kode Python yang menangani ketiganya:
encoding menghilangkan BOM jika ada.
import csv
import json
def coerce_value(value):
if value == '':
return None
try:
return int(value)
except ValueError:
pass
try:
return float(value)
except ValueError:
pass
if value.lower() in ('true', 'false'):
return value.lower() == 'true'
return value
def csv_to_json(csv_path, json_path):
with open(csv_path, encoding='utf-8-sig') as f: # utf-8-sig strips BOM
reader = csv.DictReader(f)
rows = []
for row in reader:
rows.append({k: coerce_value(v) for k, v in row.items() if k})
with open(json_path, 'w', encoding='utf-8') as f:
json.dump(rows, f, indent=2, ensure_ascii=False)
csv_to_json('input.csv', 'output.json')
Itu utf-8-sig mencoba pemaksaan numerik secara berurutan: integer terlebih dahulu, lalu float, lalu boolean, lalu string. Pemroses coerce_value menghilangkan kolom fiktif dari koma di akhir baris header. if k JSON bersarang dari CSV datar
CSV tidak dapat merepresentasikan struktur secara langsung, tetapi ada dua strategi umum.
Notasi kunci berpoin.
Beberapa ekspor CSV menggunakan header seperti . Langkah post-processing membagi berdasarkan titik dan membangun objek bersarang: address.city dan address.zipPengelompokan dan penyusunan.
def unflatten(row):
result = {}
for key, value in row.items():
parts = key.split('.')
d = result
for part in parts[:-1]:
d = d.setdefault(part, {})
d[parts[-1]] = value
return result
Jika beberapa baris mewakili anak-anak dari satu orang tua (baris pesanan di bawah pesanan), kelompokkan berdasarkan ID orang tua dan bangun array bersarang setelah konversi. Kedua pendekatan tidak termasuk dalam langkah konversi cepat — jika Anda melakukan ini, Anda sedang menulis skrip transformasi, bukan hanya mengubah format. Alat yang Harus Digunakan
Untuk CSV yang bersih dan terstruktur yang hanya perlu perubahan format: gunakan online
. Tempel, konversi, selesai. Tidak perlu setup, tidak perlu ketergantungan. Pengubah CSV ke JSONUntuk CSV dengan masalah yang diketahui — masalah encoding, kutipan yang tidak konsisten, pemaksaan tipe, atau nilai nol — tulis skrip. Potongan kode Python di atas menangani kebanyakan kasus dunia nyata. Pandas juga merupakan pilihan (
), tetapi ia membuat keputusan pemaksaan sendiri yang mungkin tidak sesuai dengan keinginan Anda.pd.read_csv() + df.to_json()Untuk satu baris di terminal,
Miller ) adalah jalur tercepat: (mlrMiller menangani kutipan, encoding, dan kolom yang hilang secara tepat tanpa harus menulis kode. Ini adalah jalur tercepat dari CSV yang bermasalah ke JSON bersih tanpa harus menulis kode apa pun.
mlr --icsv --ojson cat input.csv > output.json
Kasus Ekstrem CSV dan Cara Menanganinya
Masalah CSV
| Apa yang diperoleh JSON | Cara menanganinya | Sel kosong |
|---|---|---|
| atau kunci yang hilang | null Putuskan secara awal; konsisten di seluruh baris | String yang tampak angka (kode pos) |
| Kehilangan nol di awal jika dipaksa | Tetap sebagai string; hanya paksa kolom yang Anda kendalikan | Koma di akhir header |
| Kunci kosong | pada setiap baris "" Gunakan | saat membangun objek if k BOM UTF-8 di awal file |
| Kesalahan parsing atau | di kunci pertama Buka dengan | Baris baru yang dikutip di dalam sel encoding='utf-8-sig' |
| Menghancurkan parser baris per baris yang sederhana | Gunakan parser CSV yang benar, bukan | di kolom boolean split(',') |
"true"/"false" string, bukan | "true" boolean true Pemaksaan eksplisit setelah perbandingan huruf kecil | Perubahan format mudah. Data tidak mudah. |
Pengubah CSV ke JSON menangani bagian struktur dalam beberapa detik. Yang memakan waktu adalah memahami apa yang sebenarnya ada di file Anda — nilai nol, keanehan encoding, kolom yang tampak angka tetapi bukan angka. Tulis pemaksaan tipe dan penanganan nilai nol secara eksplisit, bukan percaya pada alat untuk menebak, dan Anda akan menghindari bug downstream yang muncul dari data yang salah secara diam-diam.
CSV ke JSON: Kapan Harus Mengonversi dan Bagaimana Menjaga Kebersihan Data 2
Instal Ekstensi Kami
Tambahkan alat IO ke browser favorit Anda untuk akses instan dan pencarian lebih cepat
恵 Papan Skor Telah Tiba!
Papan Skor adalah cara yang menyenangkan untuk melacak permainan Anda, semua data disimpan di browser Anda. Lebih banyak fitur akan segera hadir!
Alat Wajib Coba
Lihat semua Pendatang baru
Lihat semuaMemperbarui: Kita alat terbaru ditambahkan pada 13 Mei 2026
