JSON, CSV ve YAML Arasında Dönüştürme
JSON, CSV ve YAML çoğu zaman aynı verileri tutabilir, ancak birbirine bire bir karşılık gelmez. Bu rehber her biçimin neye uygun olduğunu, dönüştürme sırasında hangi ayrıntıların değişebileceğini ve sonucun nasıl kontrol edileceğini açıklar.
Her Biçim Neye Uygundur?
JSON, web API'leri ve programların okuduğu yapılandırmalar için yaygın biçimdir. Küçük ve açık bir tür kümesi vardır: nesneler, diziler, dizeler, sayılar, mantıksal değerler ve null. Katı sözdizimi yazılımların onu ayrıştırmasını kolaylaştırır, ancak yorum satırı desteklemez.
CSV bir tablodur: her satırda bir kayıt, her sütunda bir değer. Elektronik tablolar, veritabanları ve raporlama araçları onu kolayca içe aktarır ve büyük, düz veri kümeleri için kompakttır. Veri türlerini veya iç içe yapıları tanımlamanın standart bir yolu yoktur.
YAML, insanlar tarafından yazılıp okunmak üzere tasarlanmıştır. Yorumlara izin verdiği, parantez yerine girinti kullandığı ve JSON ile aynı yapıları tanımlayabildiği için yapılandırma dosyalarında popülerdir. Esnek sözdizimi, küçük girinti veya tırnak hatalarının anlamı değiştirebileceği anlamına da gelir.
| Özellik | JSON | CSV | YAML |
|---|---|---|---|
| İç içe nesneler ve diziler | Evet | Hayır (düz tablo) | Evet |
| Veri türleri | Dize, sayı, mantıksal değer, null | Yalnızca metin | Değerden çıkarılır |
| Yorumlar | Hayır | Hayır | Evet |
| Tipik kullanım | API'ler, uygulama verileri | Elektronik tablolar, içe aktarmalar | Yapılandırma dosyaları |
İç İçe Yapılar CSV'de Düzleştirilir
Bir CSV dosyasında yalnızca satırlar ve sütunlar bulunur; bu nedenle iç içe verilerin yeniden biçimlendirilmesi gerekir. İki yaygın yaklaşım vardır. Birincisi yapıyı address.city ve address.zip gibi sütun adlarına düzleştirir. İkincisi iç içe bölümü tek bir hücrede JSON dizesi olarak tutar. LeedyBox Veri Dönüştürücü her iki seçeneği de sunar.
Her iki yaklaşımın da artıları ve eksileri vardır. Düzleştirilmiş sütunlar elektronik tabloda kolay okunur, ancak farklı uzunluktaki diziler çok sayıda seyrek sütun üretir. Hücrelerdeki JSON dizeleri yapıyı korur, ancak elle düzenlemesi daha zordur. Daha sonra tekrar JSON'a dönüştürürseniz yapının başlangıçtakiyle eşleştiğini kontrol edin.
CSV'de Türler Metne Dönüşür
CSV her değeri metin olarak saklar. 42 sayısı, "42" dizesi ve true mantıksal değeri bir hücrede aynı görünür. Bir CSV dosyası geri okunduğunda programın hangi sütunların sayı veya tarih olduğunu tahmin etmesi ya da bunun ona söylenmesi gerekir. LeedyBox dönüştürücüsü CSV değerlerini metin olarak okur; bu nedenle bir CSV dosyasındaki sayılar, siz değiştirmedikçe JSON'da dize olarak görünür.
Elektronik tablo uygulamaları kendi tahminlerini de ekler: posta kodlarının veya telefon numaralarının başındaki sıfırları silebilir, uzun sayıları bilimsel gösterime çevirebilir veya değerleri tarih olarak yorumlayabilirler. =, +, - veya @ ile başlayan hücreler formül olarak değerlendirilebilir; dönüştürücüde CSV çıktısı için isteğe bağlı bir Excel formül koruması ayarı vardır.
Yorumlar ve YAML'da Tür Belirleme
JSON'da yorum yoktur; bu nedenle YAML'ı JSON'a dönüştürmek yorumları siler. Geri dönüştürmek onları geri getirmez. Yorumlar önemliyse özgün YAML dosyasını saklayın.
YAML, tırnaksız değerlerin türünü tahmin eder. Bazı ayrıştırıcıların kullandığı eski YAML 1.1 kurallarına göre no, yes, on ve off gibi sözcükler mantıksal değere dönüşür; bu nedenle NO gibi bir ülke kodu false olabilir. 2026-10-02 gibi değerler tarih nesnesine dönüşebilir, 1e3 veya 010 sayı olarak okunabilir. LeedyBox dönüştürücüsü YAML'ı, no değerini ve tarihleri metin olarak koruyan YAML 1.2 çekirdek şemasıyla okur, ancak dosyanızı okuyan diğer araçlar farklı davranabilir. Metin olarak kalması gereken değerleri tırnak içine almak en güvenli alışkanlıktır.
JavaScript'te Büyük Sayılar
JavaScript sayıları 64 bit kayan noktalı değerler olarak saklar. 9.007.199.254.740.991'den (253 − 1) büyük tam sayıların hepsi tam olarak gösterilemez; bu nedenle 12345678901234567891 gibi büyük bir kimlik ayrıştırılırken fark ettirmeden yuvarlanabilir. Bu durum, bu tür sayıları algıladığında bir uyarı gösteren bu araç da dahil olmak üzere tarayıcı tabanlı tüm dönüştürücüleri etkiler. Veritabanı kimliklerini ve diğer uzun tanımlayıcıları dize olarak saklamak daha güvenlidir.
Sonucu Kontrol Etme
Geçerli çıktı üreten bir dönüştürme mutlaka doğru değildir. Sonucu kullanmadan önce:
- Satır veya öğe sayısını kaynakla karşılaştırın.
- Boş değerler, özel karakterler, satır sonları veya iç içe veriler içerenler dahil birkaç kaydı örnek olarak kontrol edin.
- Hedef sistemde sayı, mantıksal değer veya tarih olması gereken sütunları kontrol edin.
- Yuvarlanmış olabilecek uzun sayıları arayın.
- Çıktıyı, onu okuyacak programla doğrulayın; önce verilerinizin bir kopyasını kullanın.
Metin Karşılaştırma aracı, özgün bir dosyayı gidiş-dönüş dönüştürmesinin sonucuyla karşılaştırmanıza yardımcı olabilir.
Sık Sorulan Sorular
JSON'u CSV'ye ve geri, değişiklik olmadan dönüştürebilir miyim?
Yalnızca basit, düz verilerde; o durumda bile sayılar ve mantıksal değerler genellikle metin olarak geri gelir. İç içe veriler ve türler kullanılan seçeneklere bağlıdır; bu nedenle sonucu özgün veriyle karşılaştırın.
YAML değerim neden true veya false oldu?
Bazı YAML ayrıştırıcıları yes, no, on ve off gibi tırnaksız sözcükleri mantıksal değer olarak ele alır. Metin olarak kalması için değeri tırnak içine alın.
Verilerim dönüştürülürken yükleniyor mu?
LeedyBox Veri Dönüştürücü tarayıcınızda çalışır; bu nedenle yapıştırdığınız veriler cihazınızda işlenir.