CSV ve JSON: aynı veriyi taşımanın iki yolu
Tablo verilerinin büyük çoğunluğu iki biçimden birinde yaşar. CSV elektronik tablonun ana dilidir: her satırın bir satır olduğu ve virgüllerin sütunları ayırdığı düz metin dosyası. JSON ise API'lerin ve uygulamaların dilidir: nesnelerden (anahtar-değer çiftleri) ve dizilerden (sıralı listeler) oluşan yapılandırılmış bir metin biçimi. Aynı bilgiyi çok farklı şekillerde tanımlarlar; bu da aralarında dönüştürmenin bu kadar sık karşılaşılan bir durum olmasının tam nedenidir. Bu sayfa söz konusu dönüşümü her iki yönde, tamamen tarayıcınızda yapar.
CSV'nin doğal hissettiği her yerde parlar. Bir veritabanından rapor dışa aktarın, sipariş listesi indirin ya da Excel veya Google E-Tablolar'dan bir sayfa kaydedin; neredeyse her zaman CSV elde edersiniz. Derli toplu, okunabilir ve dünyadaki her analitik aracı onu açabilir. JSON ise yazılımın yazılımla konuştuğu her yerde parlar. REST API'leri onu gönderip alır, yapılandırma dosyaları kullanır, JavaScript herhangi bir ayrıştırma kütüphanesi olmadan okur. Bir elektronik tablo dışa aktarımını bir API'ye beslemek veya bir API yanıtını elektronik tabloya çekmek istediğinizde, aslında bu iki dünya arasında çeviri yapıyorsunuz.

Satırlar ve başlıklar nesnelere nasıl dönüşür
Eşleme, göründüğünden daha basittir. CSV dosyasının ilk satırı genellikle başlık satırıdır ve bu başlık adları JSON'daki anahtarlar olur. Her sonraki satır bir nesne olur; her hücre eşleşen başlıkla eşlenir. Dosyanın tamamı bu nesnelerden oluşan bir dizi haline gelir. Yani name,email,age sütunlarına sahip bir CSV, [{"name": "Ada", "email": "ada@example.com", "age": "36"}, ...] gibi bir listeye dönüşür. Diğer yönde, JSON'dan CSV'ye gitmek, başlık satırını oluşturmak için ilk nesnenin anahtarlarını okur, ardından nesne başına bir satır yazar. Verileriniz gerçekten tablo biçimindeyse bu temiz ve öngörülebilir bir gidiş-dönüştür.
Bilinmesi gereken tuzaklar
CSV basit görünür ama birkaç keskin kenara sahiptir. En büyüğü alan içindeki virgüllerdir. Bir adres "Berlin, Almanya" içeriyorsa virgüllere yapılan naif bir bölme, tek değeri iki sütuna parçalar. CSV standardı bu tür alanları çift tırnak içine sararak, tırnaklı bir alan içindeki tırnakları ise ikiye katlanmış şekilde ("") yazarak çözer. İyi bir dönüştürücü bu kurallara uyar; böylece verileriniz sessizce sütun kaymaz. Ayırıcıya da dikkat edin: pek çok Avrupa dışa aktarımı virgül yerine noktalı virgül kullanır çünkü virgül orada zaten ondalık ayracıdır. Sekme ve boru karakteri de görülür.
Daha derin fark türlerdir. CSV'nin veri türleri kavramı yoktur. Her şey metindir; bu nedenle 42 sayısı, true boolean ve boş hücre düz dize gibi görünür. JSON ise sayıları, dizeleri, booleanleri, null'u ve iç içe yapıları birbirinden ayırt eder. CSV'yi JSON'a dönüştürdüğünüzde, araç sayı ve boolean ayrıştırmasi yapmadıkça değerler dize olarak gelir çünkü kaynak dosya bir sayıyı bir sözcükten ayırt etmenin yolunu vermez. JSON'u CSV'ye dönüştürmek ise tam ters soruna yol açar: iç içe nesneler ve diziler düz bir ızgaraya sığmaz; bu nedenle genellikle tek bir hücrede düzleştirilir veya metin olarak yazılır. Bunu önceden bilmek, daha sonra bir sütunun "neden yanlış göründüğünü" sorgulama çabasını kurtarır.

Gerçek bir gidiş-dönüş
Sürekli karşılaşılan bir senaryo şu: Bir iş arkadaşı size yeni kullanıcıların elektronik tablosunu gönderir ve dahili bir API aracılığıyla yüklemenizi ister. API yalnızca JSON kabul eder. Sayfayı CSV olarak dışa aktarırsınız, buraya yapıştırırsınız ve istek yüküne atmaya hazır temiz bir nesne dizisi elde edersiniz. Daha sonra API oluşturduğu kayıtların JSON listesini döndürür ve aynı iş arkadaşının inceleme için bunu geri almanız gerekir. JSON'u yapıştırır, CSV'ye dönüştürürsünüz ve doğrudan kendi elektronik tablosunda açılır. Betik yok, kurulum yok; yalnızca normal bir iş akışının ortasında iki hızlı çeviri.
Yalnızca yerel, tasarım gereği
Bunların tamamı tarayıcınızda çalışır. CSV ve JSON'unuz kendi makinenizdeki JavaScript tarafından ayrıştırılır ve dönüştürülür; sunucuya hiçbir şey yüklenmez. Bu önemlidir çünkü dışa aktarmalar çoğunlukla rastgele bir uzak hizmete yapıştırmamanız gereken gerçek isimler, e-postalar, sipariş ayrıntıları veya dahili tanımlayıcılar içerir. Burada veri sayfayı terk etmez. Sonucu daha sonra düzenlemek isterseniz JSON biçimlendirici düzgün yazdırıp doğrulayacaktır; ilgili biçimler için diğer veri dönüştürücülere de göz atabilirsiniz.
Sıkça sorulan sorular
Verilerim herhangi bir yere yükleniyor mu?
Hayır. Dönüşüm, JavaScript kullanılarak tamamen tarayıcınızda çalışır; bu nedenle CSV ve JSON'unuz kendi cihazınızda kalır ve hiçbir zaman sunucuya gönderilmez.
Dönüştürücü, alan içindeki virgülleri işliyor mu?
Evet. Virgül içeren alanlar CSV'de çift tırnak içine sarılmalıdır; ayrıştırıcı bu tırnakları gözetir, böylece değer tek bir sütunda kalır.
Sayılarım JSON'da neden metin olarak görünüyor?
CSV veri türleri kavramına sahip değildir; her hücre düz metindir. Kaynak dosya bir sayıyı bir sözcükten ayırt etmenin yolunu vermediğinden, sayı ve boolean ayrıştırması uygulanmadıkça değerler JSON dizesi olur.
CSV'ye dönüştürdüğümde iç içe JSON'a ne olur?
Düz bir ızgara iç içe yapıları barındıramaz; bu nedenle iç içe nesneler ve diziler genellikle düzleştirilir ya da tek bir hücre içinde metin olarak yazılır.
Virgül yerine noktalı virgül veya sekme kullanabilir miyim?
Evet. Özellikle Avrupa kaynaklı pek çok dışa aktarma ayırıcı olarak noktalı virgül veya sekme kullanır; araç, standart virgül yerine bunları da okuyabilir.
Her iki yönde de dönüştürüyor mu?
Evet. CSV'yi JSON'a, JSON'u da CSV'ye çevirebilirsiniz; bu da elektronik tablolar ile API'ler arasındaki gidiş-dönüşleri kolaylaştırır.
