Langsung ke konten

Ubah CSV ke JSON

Ubah file CSV atau tabel yang ditempel menjadi JSON yang bersih — angka dan boolean diberi tipe, objek bersarang dibangun dari header bertitik, dan bentuknya persis seperti yang diharapkan kode Anda.

  • Tidak pernah disimpan
  • Tanpa antre, tanpa menunggu
  • Tanpa daftar, tanpa watermark

Cara kerjanya

1

Tambahkan CSV

Letakkan file .csv atau .tsv, atau tempel datanya. Delimiter dan encoding dideteksi untuk Anda.

2

Pilih bentuknya

Array objek, array of array, objek dengan kunci dari kolom pertama, atau JSON Lines — ditambah tipe, nilai kosong, dan indentasi.

3

Salin atau unduh

Salin JSON ke clipboard atau simpan sebagai file .json.

Di mana CSV lebih samar daripada kelihatannya

CSV tidak punya standar yang sesungguhnya — ada spesifikasi anjuran dari tahun 2005 yang menjelaskan apa yang dilakukan kebanyakan alat, dan banyak sekali software yang melakukan hal lain. Jadi tugas pertama adalah mengetahui file itu sebenarnya seperti apa: apakah nilai dipisahkan koma, titik koma, atau tab (locale Eropa mengekspor titik koma, karena koma adalah pemisah desimal mereka), apakah baris pertama adalah header, dan bagaimana tanda kutip ditangani. Kolom yang dikutip secara sah boleh berisi koma, baris baru, dan tanda kutip ganda, itulah sebabnya memecah berdasarkan koma adalah cara yang salah untuk membacanya, dan itulah sebabnya parser yang naif merusak file apa pun yang berisi alamat.

Tipe adalah tugas kedua, dan JSON punya aturan yang tidak dimiliki CSV. Sel CSV hanya berisi teks, tidak lebih; JSON membedakan angka, string, boolean, dan null. Sesuatu harus memutuskan mana yang mana, dan keputusan yang penting adalah yang bisa salah: nol di depan itu bermakna pada kode pos, nomor telepon, atau nomor rekening, sehingga nilai seperti 01234 harus tetap string, bukan menjadi angka 1234. Hal yang sama berlaku untuk ID panjang, yang kehilangan presisi sebagai angka JSON di atas sekitar sembilan kuadriliun.

Tanggal tetap berupa teks aslinya, karena JSON tidak punya tipe tanggal. 2024-03-05 keluar sebagai string "2024-03-05", dan itu jawaban yang jujur, bukan keterbatasan — alternatifnya adalah menebak, dan menebak adalah cara 03/05/2024 menjadi Maret di satu negara dan Mei di negara lain. Mengonversinya adalah keputusan bagi apa pun yang memakai JSON tersebut, yang tahu format yang diinginkannya.

Encoding adalah kegagalan senyap yang terakhir. CSV tidak membawa catatan tentang encoding karakternya, sehingga file yang disimpan sebagai Windows-1252 lalu dibaca sebagai UTF-8 menghasilkan karakter kacau (mojibake) tepat di baris-baris yang berisi nama beraksen — dan byte order mark di awal file, yang ditambahkan Excel, muncul sebagai karakter nyasar di nama kolom pertama jika tidak ditangani. Keduanya adalah sifat CSV, bukan sifat konverter mana pun.

Jika Anda butuh hal lain

Untuk file yang terlalu besar untuk ditampung di memori, atau untuk apa pun yang dijalankan lewat skrip, csvkit memang dibuat untuk itu: csvjson --stream data.csv mengonversi secara bertahap, csvlook memungkinkan Anda melihat isinya dulu, dan csvclean memperbaiki baris tidak rata yang merusak semua proses berikutnya. Miller — mlr --icsv --ojson cat data.csv — melakukan hal yang sama dengan kecepatan tinggi dan menangani JSON per baris, yang sebenarnya diinginkan sebagian besar pipeline data.

Jika tipe lebih penting daripada kepraktisan, lakukan konversi di kode dengan tipe yang dideklarasikan, bukan disimpulkan. pandas di Python dengan pemetaan dtype yang eksplisit, atau skrip kecil dengan skema, memastikan kode pos tetap kode pos dan ID tetap memiliki semua digitnya — hal yang tidak bisa dijamin inferensi otomatis mana pun untuk file yang belum dilihatnya secara keseluruhan.

Pertanyaan yang sering diajukan

Bentuk JSON mana yang sebaiknya saya pilih?

Array objek — [{"name": "Ada", "age": 36}] — cocok untuk hampir semua API dan library. Array of array adalah yang paling ringkas. Objek berkunci memungkinkan kode mencari record berdasarkan ID. JSON Lines menaruh satu record per baris, untuk alat streaming, BigQuery, dan pipeline log.

Bagaimana angka dan boolean ditentukan?

Sekali per kolom: sebuah kolom menjadi angka hanya jika setiap nilainya berupa angka, sehingga "007" dan 7 tidak pernah tercampur di bawah satu kunci. Nilai dengan nol di depan, dan ID yang terlalu panjang untuk ditampung JavaScript secara tepat, tetap berupa string. true dan false menjadi boolean, dan sel kosong menjadi null — atau string kosong, atau dihilangkan, sesuai pilihan Anda.

Bisakah alat ini membuat JSON bersarang?

Bisa. Dengan opsi bersarang aktif, header seperti address.city menjadi {"address": {"city": …}}, dan tags.0, tags.1 menjadi array.

Apakah data saya disimpan di suatu tempat?

Tidak. Tidak ada yang dikirim ke mana pun dan tidak ada yang disimpan.

Bagaimana dengan titik koma, tab, dan encoding lain?

Koma, titik koma, tab, dan pipe dideteksi otomatis, begitu pula UTF-8, UTF-16, dan encoding Windows lama, sehingga teks beraksen dan non-Latin tetap utuh.

Bagaimana dengan nama kolom yang ganda atau kosong?

Nama ganda diberi nomor (name, name_2) dan header kosong diberi nama berdasarkan posisinya (column_3), sehingga tidak ada nilai yang tertimpa dan Anda diberi tahu apa yang berubah.

Perlu diketahui: Tanggal tetap berupa teks seperti di file Anda, karena JSON tidak punya tipe tanggal. File yang sangat besar dibatasi oleh memori browser Anda.

Pasang alat ini di situs Anda

Gratis untuk blog, halaman kelas, atau artikel bantuan apa pun. Tempel satu potong kode dan pengunjung Anda bisa langsung memakainya di halaman Anda.