Tidak suka iklan? Pergi Bebas Iklan Hari ini

CSV ke JSON Kapan harus dikonversi dan bagaimana menjaga kebersihan data Anda

Diterbitkan pada
CSV ke JSON: Kapan harus mengonversi dan bagaimana menjaga kebersihan data 1
IKLAN · HAPUS?

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 JSONCara menanganinyaSel kosong
atau kunci yang hilangnull Putuskan secara awal; konsisten di seluruh barisString yang tampak angka (kode pos)
Kehilangan nol di awal jika dipaksaTetap sebagai string; hanya paksa kolom yang Anda kendalikanKoma di akhir header
Kunci kosongpada setiap baris "" Gunakansaat membangun objek if k BOM UTF-8 di awal file
Kesalahan parsing ataudi kunci pertama Buka denganBaris baru yang dikutip di dalam sel encoding='utf-8-sig'
Menghancurkan parser baris per baris yang sederhanaGunakan parser CSV yang benar, bukandi kolom boolean split(',')
"true"/"false" string, bukan"true" boolean true Pemaksaan eksplisit setelah perbandingan huruf kecilPerubahan 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

Ingin bebas iklan? Bebas Iklan Hari Ini

Instal Ekstensi Kami

Tambahkan alat IO ke browser favorit Anda untuk akses instan dan pencarian lebih cepat

Ke Ekstensi Chrome Ke Ekstensi Tepi Ke Ekstensi Firefox Ke Ekstensi Opera

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!

IKLAN · HAPUS?
IKLAN · HAPUS?
IKLAN · HAPUS?

Pojok Berita dengan Sorotan Teknologi

Terlibat

Bantu kami untuk terus menyediakan alat gratis yang berharga

Belikan aku kopi
IKLAN · HAPUS?