CSV, JSON dan YAML
Tiga format membawa kebanyakan data berstruktur di dunia. Menukar antara keduanya mudah; menukar tanpa merosakkan sesuatu secara senyap memerlukan sedikit berhati-hati.
Diterbitkan
Untuk apa setiap satu
CSV ialah jadual: baris dan lajur, tiada yang lain. Ia boleh dibaca secara sejagat, sangat kecil, dan tidak dapat mengungkapkan apa-apa yang bersarang. JSON ialah pokok — objek di dalam tatasusunan di dalam objek — dan ialah apa yang dituturkan oleh hampir setiap API web. YAML mengungkapkan struktur yang sama seperti JSON tetapi menggunakan inden dan bukan pendakap, yang menjadikannya jauh lebih selesa untuk dibaca dan disunting oleh manusia, dan sebab fail konfigurasi semakin beralih kepadanya.
Perangkap pemaksaan jenis
Inilah yang sebenarnya merugikan wang orang. CSV hanya mengandungi teks — tiada cara untuk menandakan nilai sebagai nombor, tarikh atau rentetan. Jadi penukar meneka, dan tekaan itu kerap salah:
- Poskod seperti
01234menjadi nombor1234, kehilangan sifar di hadapan. - Kod produk seperti
1-2menjadi tarikh. - Nombor akaun yang panjang menjadi titik terapung dan kehilangan digit terakhirnya.
NA, yang bermaksud Amerika Utara, menjadi “tidak tersedia”.
Setiap satu daripada itu berlaku secara senyap. Inilah sebabnya penukaran CSV kepada JSON yang berhati-hati patut membiarkan setiap nilai sebagai rentetan dan membenarkan anda memutuskan — yang sengaja dilakukan oleh penukar laman ini, walaupun pada mulanya ia kelihatan terlalu cerewet.
Apa yang tidak kekal dalam perjalanan ke CSV
Sarang. Tatasusunan JSON yang berisi objek rata menjadi jadual yang bersih. Sebaik sahaja nilai itu sendiri ialah objek atau tatasusunan, tiada lajur untuk meletakkannya. Pilihannya ialah meratakan dengan kunci majmuk, menyirikan bahagian bersarang kembali kepada teks di dalam selnya, atau membuangnya — dan membuangnya secara senyap ialah yang terburuk daripada tiga itu. Menulisnya semula sebagai teks JSON di dalam sel sekurang-kurangnya mengekalkan data boleh dipulihkan.
Bahagian tajam YAML
YAML selesa dibaca dan luar biasa mudah disalahgunakan.
- Inden ialah struktur, dan tab tidak dibenarkan. Ruang yang salah letak mengubah makna dan bukan menyebabkan ralat.
- Sesetengah perkataan kosong ialah boolean. Dalam YAML yang lebih lama,
y,n,on,off,yesdannosemuanya diurai sebagai benar atau palsu — jadi lajur negara yang mengandungiNOuntuk Norway menjadifalse. Letakkan tanda petikan. - Komen hilang apabila ditukar kepada JSON, kerana JSON tiada cara untuk mewakilinya.
Pusingan penuh tidak dijamin
Menukar JSON kepada YAML dan kembali biasanya memulangkan apa yang anda mulakan. Menukar CSV kepada JSON dan kembali biasanya tidak: gaya tanda petikan, susunan lajur bagi rekod yang berbeza bentuk, dan perwakilan nilai kosong semuanya ialah pilihan, dan alat yang berbeza memilih secara berbeza. Jika pusingan penuh mesti tepat, sahkannya dan jangan menganggap.
Untuk bertukar antara keduanya: tukar CSV kepada JSON, tukar JSON kepada CSV, atau tukar JSON kepada YAML — dan semak hasilnya, kerana pusingan penuh tidak selalunya tepat.