Data & spreadsheet · CSV Lebih bersih
CSV vs JSON: Dua Format Data dan Gagasan Tentang Struktur di Baliknya
· Latar belakang
csv json format data
CSV mendeskripsikan tabel; JSON menggambarkan sebuah pohon. Postingan ini menjelaskan dari mana JSON berasal, mengapa ia membawa tipe dan sarang yang CSV tidak bisa, dan apa arti ketidakcocokan setiap kali data berpindah di antara keduanya.
Daftar pelanggan yang sama terlihat sangat berbeda sebagai CSV dan sebagai JSON — mengapa setiap format mengkodekan gagasan struktur yang berbeda
Tabel pelanggan terlihat kompak di CSV karena setiap baris meminjam makna dari satu header bersama. JSON mengulangi nama properti di setiap objek dan dapat menyarangkan alamat atau daftar di bawah pelanggan. Oleh karena itu, kedua file tersebut mengungkapkan kemampuan struktural yang berbeda meskipun fakta yang terlihat tumpang tindih.
ToolAcre mengonversi persimpangan umum: header datar ditambah baris data menjadi array objek datar tingkat atas. Itu tidak mengubah tanda baca di header menjadi cabang atau menyimpulkan array dari kolom berulang. Memahami batas tersebut mencegah konverter datar disalahartikan sebagai perancang model data.
CSV sebagai kisi — baris dan kolom, makna posisi, dan tidak lebih dari teks
Dalam implementasi ini, CSV adalah tabel string berbentuk persegi panjang. Baris pertama memberikan nama header dan setiap sel selanjutnya menerima arti dari posisi kolomnya. Baris pendek diberi bantalan dan baris panjang diperingatkan, karena posisi hanya berfungsi dengan baik bila lebar baris sesuai dengan header.
Tidak ada sel nomor asli, boolean, objek, atau nol. Kutipan melindungi sintaksis tetapi tidak menetapkan tipe. Urutan digit dan kata true tetap menjadi nilai tekstual, yang menjaga pengidentifikasi tetap stabil dan meminta konsumen untuk menerapkan skema jika skema tersebut benar-benar ada.
Dalam ToolAcre, sel CSV adalah string yang diposisikan di bawah satu baris header
Buku kerja ini menanyakan asal usul dan riwayat standar JSON awal tahun 2000an, namun repositori ini bukan sumber untuk tanggal atau publikasi tersebut. Perilaku yang dapat diverifikasi adalah browser menggunakan `JSON.parse` dan `JSON.stringify`, menerima array objek tingkat atas untuk dikonversi ke tabel.
JSON yang tidak valid menerima kesalahan penguraian tertentu, root non-array ditolak, dan array yang berisi primitif tidak didukung. Batasan runtime tersebut lebih penting bagi pengunjung dibandingkan kronologi yang tidak disebutkan. Konteks historis harus berasal dari standar utama di luar kumpulan sumber tugas ini.
JSON riwayat standar berada di luar bukti penyimpanan; bentuk runtime yang didukung dapat diverifikasi
Objek JSON membawa setiap kunci di samping nilainya, sedangkan sel CSV bergantung pada header pada indeks yang sama. ToolAcre menghitung kunci yang tidak ambigu satu kali, lalu memetakan setiap baris berdasarkan posisi. Sel yang terwakili hilang menjadi string kosong sehingga objek berbagi kumpulan kunci yang stabil.
Deskripsi mandiri tersebut memiliki ukuran dan biaya pengulangan tetapi membuat setiap catatan JSON dapat dimengerti tanpa menempatkan header secara terpisah. Sebaliknya, mengubah urutan kolom CSV tanpa headernya akan merusak makna. Konversi harus menjaga nama dan posisi tetap berpasangan di seluruh tabel.
Pohon versus tabel — sarang, array, dan kunci opsional, dan mengapa mereka tidak memiliki tempat alami dalam satu baris
Nilai JSON dapat berisi objek dan array, sedangkan satu sel CSV tidak dapat bercabang secara asli. Dalam arah sebaliknya ToolAcre membuat serial nilai bersarang dengan `JSON.stringify` dan menempatkan teks JSON itu dalam satu sel. Itu tidak membuat kolom alamat_kota atau baris tag tambahan.
Kunci opsional di seluruh rekaman JSON menjadi gabungan kolom dalam urutan yang pertama kali dilihat, dengan kolom kosong jika objek tidak memiliki kunci. Itu adalah perataan yang dapat dipertahankan untuk benda datar yang jarang. Ini tidak memberikan pemetaan alami untuk pohon-pohon yang sewenang-wenang, dan rutenya menjelaskannya daripada menebak-nebak.
Contoh praktis — satu catatan dengan alamat bersarang dan daftar tag, ditampilkan di JSON dan kemudian dimasukkan ke dalam kolom CSV
Baris CSV datar `id,name,city` diikuti oleh `001,Ada,London` dikonversi dengan rapi menjadi satu objek dengan tiga properti string. Jika JSON malah berisi `address: {city: "London"}` dan `tags: ["math","code"]`, konversi terbalik akan menulis nilai bertumpuk tersebut sebagai string JSON di bawah kolom alamat dan tag.
Memuat CSV itu lagi akan menghasilkan string yang berisi sintaks JSON, bukan nilai bersarang yang direkonstruksi. Aplikasi selanjutnya dapat mengurai sel-sel tersebut berdasarkan skemanya sendiri, namun ToolAcre tidak. Perbandingan yang berhasil mengisolasi dengan tepat di mana struktur tabel berakhir dan struktur pohon dimulai.
Contoh praktis: bidang datar dikonversi secara langsung, sedangkan JSON yang disarangkan hanya dipertahankan sebagai teks sel secara terbalik
JSON Garis, bahasa skema, dan parser streaming berada di luar implementasi. Output adalah satu array indentasi, dan input file dibaca ke dalam memori sebelum konversi. Jangan menyimpulkan streaming rekaman demi rekaman dari kehadiran pekerja parsing.
Demikian pula, alat ini tidak memvalidasi properti atau rentang numerik yang diperlukan. Ini melindungi kunci objek dari header kosong dan duplikat serta bentuk baris laporan, namun kebenaran semantik tetap menjadi tanggung jawab konsumen. Sintaks datar bisa valid ketika data bisnis salah.
Ketahui struktur mana yang Anda tuju — bagaimana Pembersih ToolAcre CSV mengonversi data tabular datar antara CSV dan JSON
Ketahui struktur mana yang diharapkan oleh destinasi. Untuk ekspor datar, ToolAcre memberikan jembatan transparan: header menjadi kunci unik, baris menjadi objek, dan nilai tetap menjadi string. Untuk model aplikasi bertingkat, tentukan pemetaan daripada memaksa cabang melalui konvensi penamaan kolom yang tidak disengaja.
Pratinjau tabel, atasi baris yang tidak rata, dan periksa JSON yang dihasilkan sebelum mengunduh. Konverter paling kuat bila digunakan dalam persimpangan format yang sempit. Hal ini tidak menghapus perbedaan konseptualnya, dan alur kerja yang dapat dipercaya tidak seharusnya menghapus perbedaan konseptual tersebut.