Pengonversi CSV ke JSON

Konversi nilai yang dipisahkan koma menjadi array atau objek JSON.

Tentang CSV → JSON

CSV (Comma-Separated Values) adalah format data tabular sederhana, sedangkan JSON (JavaScript Object Notation) adalah format standar API dan aplikasi web. Alat ini mengonversi antara keduanya, menangani bidang yang dikutip, karakter yang di-escape, dan berbagai pemisah. Saat "Baris pertama adalah header" dicentang, nama kolom menjadi kunci objek JSON.

Cara kerjanya

  1. Tempel CSV Anda: jatuhkan teks CSV Anda di kolom input. Pilih pemisah yang sesuai dengan data Anda (koma, tab, titik koma, atau bilah vertikal) dari daftar drop-down.
  2. Konfigurasi opsi: centang "Baris pertama = header" jika baris pertama berisi nama kolom (mereka akan menjadi kunci JSON). Centang "Deteksi tipe otomatis" untuk mengonversi angka dan boolean secara otomatis.
  3. Konversi: setiap baris CSV menjadi objek JSON dengan kunci dari header, atau array sederhana jika tidak ada header.
  4. Salin atau unduh: salin array JSON atau unduh file .json untuk digunakan dalam kode atau API.

Mengapa mengonversi CSV ke JSON?

CSV adalah format ekspor universal dari spreadsheet, basis data, dan alat analisis, tetapi sebagian besar API modern, aplikasi JavaScript, dan basis data NoSQL bekerja dalam JSON. Mengonversi ekspor CSV dari Google Sheets, Excel, Airtable, atau alat basis data ke JSON adalah tugas harian dalam data engineering, pengembangan web, dan integrasi API. Konverter ini menangani kasus umum: bidang yang dikutip yang mengandung koma, tanda kutip yang di-escape di dalam, akhir baris Windows (CRLF), dan kolom angka/string campuran dengan deteksi tipe pintar.

Fitur

Apa itu konversi CSV ke JSON?

Konversi CSV ke JSON mengambil file teks tabular datar (baris-baris nilai dipisahkan koma) dan mengeluarkan array JSON di mana setiap baris menjadi objek dengan kunci header kolom. Data yang sama ("nama,usia" baris baru "Alice,30" baris baru "Bob,25") berubah dari CSV dua baris menjadi array JSON dari dua objek, masing-masing dengan field nama dan usia. Konversi dapat dibalik (json-to-csv mencakup arah sebaliknya).

CSV tetap menjadi format ekspor universal untuk spreadsheet (Excel, Google Sheets, Numbers, LibreOffice Calc) dan database SQL (mysqldump, pg_dump). JSON adalah format dominan untuk API web, database NoSQL, dan aplikasi JavaScript. Mengubah antara keduanya adalah tugas interoperabilitas paling umum dalam rekayasa data, pipeline ETL, dan pekerjaan front-end.

Konverter ini menangani empat pembatas (koma, titik koma, tab, pipa), baris header opsional, dan deteksi otomatis tipe numerik dan boolean. Mengimplementasikan aturan kutipan RFC 4180 sehingga field yang dikutip dengan koma yang disematkan, baris baru, atau kutipan ganda diuraikan dengan benar. Output adalah JSON yang diformat rapi dengan indentasi dua spasi siap untuk disalin atau diunduh.

Apa yang ada di dalam konverter

Bilah kontrol atas memperlihatkan tiga knop yang mengubah perilaku parsing: dropdown pembatas (koma, titik koma, tab, atau pipa), kotak centang Baris pertama adalah header, dan kotak centang Deteksi otomatis tipe. Pilih pembatas yang cocok dengan data sumber Anda terlebih dahulu, kemudian putuskan apakah baris header harus dipromosikan ke kunci objek atau disimpan sebagai baris data.

Dua textarea menampilkan input CSV di kiri dan output JSON di kanan. Output bersifat hanya-baca dan diperbarui setelah Anda mengklik Konversi ke JSON. Penghitung baris di bawah tombol menunjukkan berapa banyak baris yang dikenali parser; jika berbeda dari yang Anda harapkan, periksa ulang pembatas atau cari kutipan yang tidak seimbang dalam input Anda.

Lima tombol aksi duduk di bawah panel: Konversi ke JSON menjalankan konversi, Salin menulis output ke clipboard Anda, Sampel memuat CSV sampel sehingga Anda dapat melihat format yang diharapkan, Bersihkan mengosongkan kedua textarea, dan Unduh menyimpan JSON sebagai file .json. Ada juga tabel pratinjau tersembunyi yang muncul ketika Anda mengklik Sampel, menampilkan baris yang diuraikan dalam tata letak tabular.

Sejarah dan latar belakang

Kartu berlubang Hollerith memulai data tabular (1890)

Sensus AS 1890 berjalan dengan kartu berlubang Herman Hollerith, setiap kartu menampung kolom data posisi tetap. Ide baris-dan-kolom sebagai format data mendahului komputer digital 50 tahun. Setiap format tabular modern (CSV, TSV, Excel, Parquet) menelusuri bentuk persegi panjangnya ke kartu berlubang. Computing-Tabulating-Recording Company yang tumbuh dari paten Hollerith menjadi IBM pada tahun 1924.

CSV muncul dari I/O berbasis daftar FORTRAN (1972)

Kompiler FORTRAN IBM pada tahun 1972 memperkenalkan I/O berbasis daftar di mana nilai yang dipisahkan dengan koma dapat dibaca ke dalam beberapa variabel dalam satu panggilan. Konvensi menyebar ke BASIC, format laporan mainframe, dan komputasi pribadi awal. Pada tahun 1980-an sebagian besar program spreadsheet (VisiCalc, Lotus 1-2-3, Excel) dapat mengekspor teks dipisahkan koma. Tidak ada spesifikasi tunggal, sehingga dialek berkembang biak.

RFC 4180 menstandardisasi CSV (2005)

RFC 4180 Yakov Shafranovich, diterbitkan pada Oktober 2005, memberi CSV spesifikasi pertamanya yang banyak dikutip. Mendefinisikan penggunaan akhiran baris CRLF, escape kutipan ganda (kutipan dalam field yang dikutip ditulis sebagai dua kutipan), dan satu karakter pembatas. RFC adalah Informational, bukan Proposed Standard, sehingga banyak alat masih menyimpang darinya, tetapi RFC 4180 tetap menjadi referensi kanonis untuk seperti apa CSV yang terbentuk baik.

JSON ditentukan (2001) dan distandardisasi (2013)

Douglas Crockford mendokumentasikan JSON pada April 2001. Itu format yang jelas untuk membuat serial objek JavaScript tetapi dengan cepat menyebar ke setiap bahasa. ECMA-404 menstandardisasinya pada 2013, RFC 8259 menggantikan RFC 4627 pada 2017. Format ini sengaja minimal (tanpa komentar, tanpa skema), itulah sebabnya menjadi lingua franca API.

Varian CSV spesifik lokal muncul (sejak 1990-an)

Di negara-negara di mana koma digunakan sebagai pemisah desimal (Prancis, Jerman, sebagian besar Eropa kontinental, Brasil), Excel mengekspor CSV dengan pembatas titik koma untuk menghindari bentrok dengan koma desimal. Di negara-negara berbahasa Inggris koma tetap. Instalasi Excel yang sama menghasilkan CSV yang berbeda tergantung pada lokal sistem operasi, itulah sebabnya konverter ini menampilkan dropdown pembatas alih-alih menebak.

PapaParse dan bangkitnya CSV dalam-browser (2014)

PapaParse Matt Holt (2014) menjadi parser CSV JavaScript de facto. Desainnya (deteksi otomatis pembatas, menangani file besar dengan web worker, kepatuhan RFC 4180 yang ketat) menjadi templat untuk setiap konverter dalam-browser yang mengikuti. Alat ini mengimplementasikan parser yang lebih ringan disetel untuk empat pembatas umum dan kasus RFC 4180 paling sering dikutip, tanpa worker (yang tidak diperlukan untuk input kilobyte hingga megabyte tipikal dari UI ini).

Alur kerja praktis

Ekspor spreadsheet ke body request API

Anda mengekspor daftar kontak 200 baris dari Google Sheets sebagai CSV. Tempel di sini, biarkan Baris pertama adalah header tercentang, klik Konversi. Array JSON output siap untuk POST ke endpoint API CRM yang mengharapkan bulk-create.

File seed database dari CSV

Anda memiliki CSV produk dari sistem warisan. Konversi ke JSON, simpan sebagai seed.json, dan muat ke MongoDB atau DynamoDB dengan mongoimport atau AWS CLI. Array JSON dipetakan langsung ke koleksi tanpa skema eksplisit.

Data untuk pustaka charting (D3, Chart.js, Recharts)

D3.js menerima CSV langsung melalui d3.csv, tetapi Chart.js dan Recharts menginginkan JSON. Konversi CSV penjualan bulanan Anda di sini, jatuhkan array yang dihasilkan ke komponen React Anda, dan teruskan ke prop chart. Opsi Deteksi otomatis tipe memastikan kolom numerik menjadi angka aktual, bukan string.

Data mock untuk frontend

Saat membangun UI sebelum backend ada, data mock cocok dalam file JSON yang diimpor dengan require atau fetch. Sketsakan rekaman Anda dalam spreadsheet, ekspor CSV, konversi di sini, dan tempel ke mockData.json. Iterasi dengan mengedit spreadsheet (yang lebih mudah daripada mengedit JSON dengan tangan) dan mengonversi ulang.

Analisis file log dengan jq

Beberapa log server berasa CSV. Konversi ke JSON, kemudian pipa melalui jq untuk memfilter, mengurutkan, dan mengagregasi. Konversi menjembatani kesenjangan antara log file datar dan alat pemrosesan aliran yang mengharapkan rekaman terstruktur.

Impor massal CMS

Platform CMS tanpa kepala (Contentful, Sanity, Strapi, Directus) biasanya menerima impor JSON. Editor menulis konten dalam spreadsheet yang familiar, Anda mengonversi di sini dan menjalankan skrip impor satu kali. Baris header menjadi nama field yang dipetakan ke skema CMS Anda.

Jebakan umum

Field yang dikutip dengan koma internal

Baris seperti 1,"Smith, John",30 memiliki tiga field logis, bukan empat, karena koma di dalam field yang dikutip adalah data, bukan pembatas. Parser ini menghormati escape kutipan ganda RFC 4180, tetapi CSV malformed (kutipan penutup hilang, kutipan tidak cocok) akan menghasilkan JSON yang tidak masuk akal. Gunakan linter CSV atau impor file ke spreadsheet terlebih dahulu untuk memunculkan kesalahan struktural.

Baris baru disematkan di dalam field yang dikutip

RFC 4180 mengizinkan baris baru literal di dalam field yang dikutip dengan kutipan ganda, tetapi banyak parser berbasis baris sederhana memperlakukan setiap baris baru sebagai pemisah rekam. Jika CSV Anda memiliki komentar atau alamat multi-baris di dalam kutipan, jumlah baris mungkin tidak cocok dengan jumlah baris visual. Konverter ini menanganinya dengan benar, tetapi alat hilir mungkin tidak.

Byte Order Mark (BOM) di awal file

Alat Windows (terutama Excel) terkadang memberi awalan file CSV UTF-8 dengan BOM tiga byte (EF BB BF). Saat Anda menyalin dari file dengan awalan BOM, header pertama mendapat awalan tak terlihat yang tidak cocok "name" dengan "name" di kode Anda. Buka file di editor hex atau hapus BOM dengan satu baris (sed di unix, Get-Content di PowerShell) sebelum menempel di sini.

Koma vs titik koma menurut lokal

Ekspor Excel lokal Prancis menggunakan titik koma karena koma adalah pemisah desimal. Mengimpornya dengan pembatas koma default membagi 1,234 menjadi dua field. Selalu pilih pembatas yang cocok dengan sumber. Jika tidak yakin, lihat baris pertama di editor teks polos; pemisah yang jelas adalah yang Anda inginkan.

Nol di awal hilang pada pemaksaan tipe

Kode pos, nomor telepon, dan SKU produk sering dimulai dengan nol (misal, "01234"). Deteksi otomatis tipe memaksa ini menjadi integer, kehilangan nol di awal (1234). Untuk kolom di mana nol di awal penting, hapus centang Deteksi otomatis tipe agar nilai tetap string. Atau konversi dan kemudian bungkus secara manual field yang terpengaruh dengan kutipan.

Injeksi formula Excel (bom CSV)

Jika sel CSV dimulai dengan =, +, -, atau @, Excel mungkin mengevaluasinya sebagai formula ketika file dibuka. =cmd|'/c calc'!A1 meluncurkan kalkulator pada mesin Windows. Ini adalah vektor serangan yang dikenal ketika aplikasi web mengekspor data yang dikendalikan pengguna ke CSV. Konversi ke JSON menetralkan ancaman (JSON tidak memiliki evaluasi formula), tetapi CSV asli tetap berbahaya.

Privasi dan penanganan data

Semua parsing terjadi di browser Anda menggunakan fungsi JavaScript kecil. Kami tidak mengirim CSV atau JSON Anda ke server, tidak mencatat input, dan tidak menyimpan output. Tombol Salin dan Unduh berinteraksi dengan sistem operasi Anda melalui API isyarat pengguna standar dan tidak terlihat oleh pihak ketiga.

Setelah halaman dimuat, alat berjalan offline. Anda dapat memutuskan koneksi dari jaringan dan mengonversi daftar pelanggan, SKU internal, atau data apa pun yang tidak boleh meninggalkan perangkat Anda. Alat aman untuk alur kerja yang berdekatan dengan HIPAA karena jalur data tidak pernah melintasi batas eksternal.

Kapan tidak menggunakan konverter ini

File sangat besar (di atas 10 MB)

Konverter menyimpan seluruh input dalam memori dan memprosesnya secara sinkron, yang membekukan tab browser pada CSV multi-juta baris. Untuk file di atas 10 megabyte, gunakan parser streaming (modul csv Python, csv-parse Node, crate csv Rust) yang membaca satu baris sekaligus.

Bentuk objek bertingkat dalam sel

CSV datar berdasarkan desain. Jika data Anda memiliki objek atau array bertingkat di dalam sel (misal, kolom tag dengan nilai dipisahkan koma), konversi memperlakukannya sebagai string, bukan array. Anda akan memerlukan langkah pasca-pemrosesan di JavaScript atau Python untuk membagi string dan membangun kembali bentuk bertingkat.

Data biner atau non-UTF-8

File CSV dari sistem Windows yang lebih lama mungkin dikodekan sebagai Windows-1252 (CP-1252) alih-alih UTF-8. Karakter khusus (é, ñ, ü) muncul sebagai mojibake ketika ditempel di textarea UTF-8. Simpan ulang file sebagai UTF-8 di editor teks Anda (atau jalankan iconv dari baris perintah) sebelum menempel.

Data streaming waktu nyata

Jika CSV Anda sedang ditambahkan terus-menerus (umpan log gaya tail), alat batch ini tidak dapat mengejar. Gunakan parser streaming yang dipipakan ke websocket atau database dengan mode ingest CSV (Postgres COPY FROM, MySQL LOAD DATA INFILE).

Pertanyaan lainnya

Apakah parser benar-benar sesuai RFC 4180?

Sebagian besar. Parser menangani escape kutipan ganda (dua kutipan di dalam field yang dikutip berarti kutipan literal), field yang dikutip dengan koma dan baris baru tersemat, dan akhiran baris CRLF atau LF. Menyimpang dari RFC 4180 yang ketat dengan menerima field yang tidak dikutip dengan spasi putih di awal atau akhir (yang dilarang oleh spesifikasi). Toleransi pragmatis ini cocok dengan apa yang dipancarkan kebanyakan eksportir CSV dunia nyata.

Bagaimana CSV Excel yang aneh memengaruhi output?

Excel menambahkan BOM ke file UTF-8, kadang-kadang menggunakan pengkodean Windows-1252, dan lebih suka titik koma di lokal non-Inggris. Hapus BOM dan simpan ulang sebagai UTF-8 sebelum menempel. Pilih pembatas yang tepat dari dropdown. Waspadai nol di awal pada kolom seperti angka; Excel sering menghapusnya sendiri ketika Anda membuka CSV.

Bagaimana dengan UTF-8 dengan BOM versus UTF-8 murni?

UTF-8 dengan BOM memiliki awalan tiga byte (EF BB BF) yang menandai pengkodean. Sebagian besar alat web (browser, parser JSON) lebih suka UTF-8 polos tanpa BOM. Jika CSV Anda berasal dari ekspor UTF-8 Excel, BOM mungkin hadir, dan field header pertama akan diam-diam mengandungnya. Hapus BOM (sed -i '1s/^\xEF\xBB\xBF//' file.csv) sebelum menempel.

Bisakah saya menyematkan JSON di dalam sel CSV?

Bisa, dengan menyertakan JSON dalam kutipan ganda dan mengeskape kutipan dalam. Konverter memperlakukan sel sebagai string, sehingga JSON di dalamnya tetap sebagai string di output. Langkah pasca-pemrosesan (JSON.parse pada field itu di kode Anda) merekonstruksi objek yang disematkan. Ini adalah pola umum saat mengirim JSON di dalam ekspor spreadsheet.

Mengapa output JSON saya kehilangan beberapa kolom?

Kemungkinan besar baris memiliki kolom lebih sedikit dari header (sel kosong di akhir dijatuhkan saat ekspor). Parser memancarkan undefined untuk nilai yang hilang, yang JSON.stringify drop, sehingga objek yang dihasilkan memiliki kunci lebih sedikit dari yang diharapkan. Buka file sumber di spreadsheet untuk melihat baris mana yang pendek, dan baik perbaiki data atau pasca-proses untuk mengisi default.

Apakah ini mendukung TSV (nilai dipisahkan tab)?

Ya, pilih Tab dari dropdown pembatas. File TSV umum ketika file CSV akan memiliki terlalu banyak sel yang dikutip (karena tab jarang merupakan data yang valid dalam sel spreadsheet). Parser menangani TSV secara identik kecuali untuk pembatas; aturan kutipan dan escape sama.

Alat terkait