Initializing, please wait a moment

CSV vs JSON - kapan menggunakan setiap format data


CSV dan JSON adalah dua format pertukaran data yang hampir setiap alat dalam stack modern dapat berbicara. CSV adalah baris dan kolom; JSON adalah objek dan array bersarang. Pembagian di antara keduanya lebih tajam daripada yang terlihat: CSV bersifat tabular berdasarkan desain, dan apa pun yang merentangkannya (koma di field, data bersarang, sel kosong) menjadi masalah parsing. JSON bersifat terstruktur berdasarkan desain, dan apa pun yang meratakannya (satu juta record pengguna dalam satu daftar) menjadi masalah memori. Panduan ini mencakup mekanika, realitas ukuran dan kecepatan, serta keputusan konkret yang menentukan format mana yang menang untuk setiap kasus penggunaan.


Apa sebenarnya masing-masing format

CSV (nilai dipisahkan koma) adalah format teks biasa: satu record per baris, field dipisahkan oleh pembatas (koma, tab, titik koma, atau pipe), baris header opsional, kuotasi field opsional. Tidak ada satu spesifikasi formal - RFC 4180 mengkodifikasi subset umum pada 2005, tetapi CSV dunia nyata bervariasi pada pembatas, karakter kuotasi, aturan escape, encoding, dan apakah baris kosong diizinkan.

JSON (JavaScript Object Notation) adalah format terstruktur rekursif: objek (peta kunci-nilai), array (daftar terurut), string, angka, boolean, dan null. Spesifikasi formalnya singkat (RFC 8259); setiap bahasa modern menyertakan parser JSON di pustaka standar; interoperabilitasnya hampir universal.


Perbandingan berdampingan

AtributCSVJSON
Bentuk dataDatar: baris dan kolomBersarang: pohon objek/array sembarang
PenjenisanSemuanya string; tipe numerik / tanggal disimpulkan saat parseString, angka, boolean, null asli; array dan objek
Ukuran file (1M record sederhana)~60-80 MB~120-180 MB (kunci berulang per record)
Kecepatan parse (data sama)~200-400 MB/s streaming~80-150 MB/s streaming (tokenisasi lebih ketat)
Ramah streamingYa - baris demi barisHanya dengan JSON Lines (satu objek per baris)
SkemaTersirat via baris headerOpsional (JSON Schema) atau tersirat
Data bersarangCanggung (ratakan ke kolom atau sematkan JSON di sel)Asli
ToolingExcel, Numbers, pandas, csvkit, setiap basis dataStdlib setiap bahasa, jq, setiap API
Dapat dibaca manusiaSangat (kolom berjajar; terbuka di spreadsheet)Ya (jika pretty-printed), padat jika diminify

Kapan CSV menang

Data tabular dengan skema stabil. Ekspor pengguna dari basis data, log transaksi, catatan sensus, dump analitik - apa pun yang secara alami baris dan kolom dikirim lebih kecil dan diparse lebih cepat sebagai CSV.

Perjalanan bolak-balik spreadsheet. Jika stakeholder akan membuka file di Excel, Google Sheets, atau Numbers, CSV adalah format yang bolak-balik tanpa kejutan. JSON terbuka di editor teks; sedikit non-pengembang yang dapat membaca file JSON 5.000 baris.

Streaming dataset besar. Memproses file 10 GB satu baris pada satu waktu adalah idiomatik dalam CSV: baca satu baris, parse, pancarkan, buang. JSON Lines mencapai hal yang sama, tetapi JSON biasa (satu array tingkat atas tunggal) memerlukan seluruh file di memori untuk diparse dengan benar.

Pemuatan data warehouse. Setiap warehouse (BigQuery, Snowflake, Redshift, DuckDB) memiliki loader CSV yang dioptimalkan. Loader JSON ada tetapi biasanya lebih lambat karena ambiguitas bentuk.


Kapan JSON menang

Data bersarang atau hierarkis. Sebuah record pengguna dengan daftar pesanan sebelumnya, setiap pesanan dengan daftar item baris, setiap item baris dengan daftar varian - JSON mengekspresikan ini dalam satu objek; CSV memerlukan denormalisasi (satu baris per item baris, header berulang) atau string JSON tertanam dalam sel (yang terburuk dari kedua format).

API HTTP. Setiap REST dan GraphQL API di web modern mengembalikan JSON. Itu default. Jangan kembalikan CSV dari API kecuali penelepon memintanya secara eksplisit.

File konfigurasi. Nilai bertipe (boolean, null, angka) penting dalam konfigurasi - CSV akan memerlukan parsing setiap field sebagai string dan casting, mengundang bug tipe. JSON mempertahankan tipe. YAML mempertahankan tipe dan menambah komentar - sering kali pilihan yang lebih baik untuk konfigurasi yang diedit manusia.

Record heterogen. Jika data Anda memiliki field opsional, bentuk polimorfis, atau record dengan skema berbeda, kebebasan JSON dipetakan secara alami; CSV memaksa penyatuan semua kolom dengan kosong di mana field tidak ada.


Pertengahan: JSON Lines (NDJSON)

JSON Lines (juga disebut NDJSON) adalah satu objek JSON per baris file teks:

{"user":"alice","age":30,"tags":["admin","paid"]}
{"user":"bob","age":25,"tags":["free"]}
{"user":"carol","age":42,"tags":["paid"]}

Ia mempertahankan penjenisan dan penyarangan JSON sambil memungkinkan streaming baris demi baris seperti CSV. Sebagian besar alat pemrosesan log, data warehouse, dan prosesor stream menerimanya secara native. Pilih JSON Lines ketika Anda membutuhkan fleksibilitas bentuk JSON dan keramahan streaming CSV.


Jebakan umum saat memilih CSV

Koma di field. Jika field mana pun dapat berisi koma (alamat, deskripsi, nama produk), field harus dikutip. Parser split(',') naif langsung rusak. Gunakan parser CSV asli (Python csv, Node fast-csv, Go encoding/csv).

Encoding. Excel di Windows default UTF-16 LE dengan BOM; sebagian besar alat mengharapkan UTF-8. Selalu tentukan encoding saat mengekspor; tambahkan BOM UTF-8 jika interop Excel penting.

Format tanggal. "2026-04-20" dan "04/20/2026" keduanya ambigu tanpa region. Lebih suka ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ) dan dokumentasikan zona waktu. Lihat panduan unix timestamps kami untuk alternatif epoch.

Trailing newline + BOM. Beberapa penulis CSV menambahkan keduanya; beberapa parser secara diam-diam menambahkan record kosong atau field yang tidak dapat dibaca. Uji bolak-balik pada sampel representatif.


Mengonversi antar format

Konversi di browser layak untuk file kecil hingga sedang. Untuk inspeksi struktur JSON, hub alat pengembang kami menautkan ke jsonparser, text-diff, dan minifier. Untuk CSV, gunakan pandas.read_csv / pandas.to_json secara lokal untuk file > 100 MB; memori browser membatasi konversi ke ~500 MB per tab dalam praktik.


Aturan keputusan CSV vs JSON dalam satu kalimat

Jika baris Anda cocok dalam satu baris header nama kolom dan pengguna spreadsheet setidaknya mungkin di hilir, kirim CSV - format ini adalah penyebut umum terendah yang setiap alat BI, setiap loader basis data, dan Excel dapat menelan tanpa kode. Jika baris mana pun memerlukan objek bersarang, array, atau angka / boolean / null bertipe yang dipertahankan melalui bolak-balik, kirim JSON, dan beralih ke JSON Lines (`.jsonl`) ketika file cukup besar sehingga satu array tingkat atas tunggal akan memaksa konsumen memuat seluruh dokumen ke memori sekaligus. Kedua format tidak dapat dipertukarkan: CSV kehilangan tipe dan penyarangan di jalan keluar, dan JSON memperoleh ketergantungan parser yang mungkin tidak dimiliki tim spreadsheet di jalan masuk.


Alat terkait


← Kembali ke Alat Pengembang

Why trust these tools

  • Ten-plus years of web tooling. The freetoolonline editorial team has shipped browser-based utilities since 2015. The goal has never changed: get you to a working output fast, without an install.
  • Truly in-browser - no upload. Every file-processing tool on this site runs in your browser through modern Web APIs (File, FileReader, Canvas, Web Audio, WebGL, Web Workers). Your photo, PDF, audio, or text never leaves your device.
  • No tracking during tool use. Analytics ends at the page view. The actual input you paste, drop, or capture is never sent to any server and never written to any log.
  • Open-source core components. The processing engines underneath (libheif, libde265, pdf-lib, terser, clean-css, ffmpeg.wasm, and others) are public and audit-able. We link to each one in its tool page's footer.
  • Free, with or without ads. All tools are fully functional without sign-up. The Disable Ads button in the header is always available if you need a distraction-free run.