Data

CSV, JSON, dan YAML

Tiga format membawa sebagian besar data terstruktur di dunia. Mengonversi di antara ketiganya mudah; mengonversinya tanpa diam-diam merusak sesuatu membutuhkan sedikit ketelitian.

Diterbitkan

Untuk apa masing-masing

CSV adalah tabel: baris dan kolom, tidak lebih. Bisa dibaca di mana saja, ukurannya sangat kecil, dan tidak bisa mengungkapkan apa pun yang bersarang. JSON adalah pohon — objek di dalam array di dalam objek — dan itulah yang dipakai hampir semua API web. YAML mengungkapkan struktur yang sama seperti JSON tetapi memakai indentasi, bukan kurung kurawal, yang membuatnya jauh lebih nyaman dibaca dan diedit manusia, dan itulah sebabnya file konfigurasi cenderung beralih ke sana.

Jebakan pemaksaan tipe

Inilah yang benar-benar merugikan orang secara finansial. CSV hanya berisi teks — tidak ada cara untuk menandai nilai sebagai angka, tanggal, atau string. Jadi konverter menebak, dan tebakannya sering salah:

  • Kode pos seperti 01234 menjadi angka 1234, kehilangan nol di depannya.
  • Kode produk seperti 1-2 menjadi tanggal.
  • Nomor rekening yang panjang menjadi floating point dan kehilangan digit terakhirnya.
  • NA, yang berarti Amerika Utara, menjadi "tidak tersedia".

Semua itu terjadi tanpa suara. Itulah sebabnya konversi CSV ke JSON yang cermat sebaiknya membiarkan setiap nilai sebagai string dan menyerahkan keputusan kepada Anda — yang sengaja dilakukan oleh konverter di situs ini, meskipun pada awalnya tampak terlalu teliti.

Yang tidak bertahan saat menjadi CSV

Sarang. Array JSON berisi objek datar menjadi tabel yang bersih. Begitu sebuah nilai itu sendiri berupa objek atau array, tidak ada kolom untuk menaruhnya. Pilihannya adalah meratakan dengan kunci majemuk, menserialisasikan bagian bersarang kembali menjadi teks di dalam selnya, atau membuangnya — dan membuangnya diam-diam adalah yang terburuk dari ketiganya. Menuliskannya kembali sebagai teks JSON di dalam sel setidaknya menjaga data tetap bisa dipulihkan.

Sisi tajam YAML

YAML nyaman dibaca dan luar biasa mudah salah.

  • Indentasi adalah struktur, dan tab tidak diizinkan. Spasi yang salah tempat mengubah makna dan bukan menimbulkan kesalahan.
  • Sebagian kata polos adalah boolean. Di YAML versi lama, y, n, on, off, yes, dan no semuanya diurai sebagai true atau false — sehingga kolom negara yang berisi NO untuk Norwegia menjadi false. Beri tanda kutip.
  • Komentar lenyap saat konversi ke JSON, karena JSON tidak punya cara untuk merepresentasikannya.

Bolak-balik tidak dijamin

Mengonversi JSON ke YAML dan kembali biasanya mengembalikan apa yang Anda mulai. Mengonversi CSV ke JSON dan kembali biasanya tidak: gaya tanda kutip, urutan kolom untuk rekaman dengan bentuk berbeda, dan representasi nilai kosong semuanya adalah pilihan, dan alat yang berbeda memilih secara berbeda. Jika proses bolak-balik harus persis, verifikasi dan jangan berasumsi.

Untuk berpindah di antara ketiganya: konversi CSV ke JSON, konversi JSON ke CSV, atau konversi JSON ke YAML — dan periksa hasilnya, karena proses bolak-balik tidak selalu persis.