API yanıtlarınızı ve JSON veri dizilerinizi Excel ve Google E-Tablolar uyumlu CSV formatına anında dönüştürün.
| JSON girdisi bekleniyor... |
Yazılım geliştiriciler, veri mühendisleri ve sistem mimarları için modern web servislerinin (REST API, GraphQL), belge tabanlı veritabanlarının (MongoDB, CouchDB, Firestore) ve mikroservis iletişiminin de facto standardı JSON (JavaScript Object Notation - IETF RFC 8259) formatıdır. Buna karşılık veri analistleri, muhasebe departmanları, iş zekası (BI) araçları ve kurumsal tablo yazılımları (Microsoft Excel, Google Sheets, Apple Numbers) için en yaygın kabul gören veri değişim ortamı CSV (Comma-Separated Values - IETF RFC 4180) standardıdır.
JSON ile CSV arasındaki temel fark veri modelleme felsefesinde yatar: JSON, iç içe geçmiş nesneleri (nested objects) ve dizileri (arrays) barındıran hiyerarşik bir ağaç veya yönlü çizge (directed graph) yapısıdır. CSV ise yalnızca satırlardan (records) ve ayrıcı karakterlerle bölünmüş sütunlardan (fields) oluşan iki boyutlu düz bir matristir (flat relational table). Çok katmanlı bir JSON yapısını kayıpsız ve hatasız bir CSV tablosuna dönüştürmek, derinlemesine bir şema analizi ve düzleştirme (flattening) algoritması gerektirir.
CSV formatı basit gibi görünse de resmi IETF RFC 4180 spesifikasyonuna göre katı sözdizimi kurallarına tabidir:
\r\n - ASCII Carriage Return + Line Feed) ile sonlanmalıdır; ancak modern Linux/macOS sistemler LF (\n) karakterini de destekler.") bulunuyorsa, hücrenin tamamı çift tırnak ("...") içine alınmak zorundadır."") yazılarak kaçırılır. Örneğin 14" Ekran ifadesi CSV içerisinde "14"" Ekran" şeklinde kodlanır.,,) boş geçilmelidir.
Web dünyasında metinler UTF-8 kodlamasıyla iletilir. Ancak Microsoft Excel (özellikle Windows sürümleri), uzantısı .csv olan dosyaları çift tıklandığında UTF-8 olarak değil; işletim sisteminin yerel ANSI kod sayfasıyla (Türkiye için Windows-1254) açmaya çalışır. Bu durum Türkçe karakterlerin (ş, ğ, ı, ö, ç, İ) bozulmasına ve anlamsız gliflere (ü, ö, ç) dönüşmesine yol açar.
Bu kronik sorunu çözmek için CSV dosyasının en başına 3 baytlık UTF-8 Byte Order Mark (BOM - Onaltılık 0xEF 0xBB 0xBF / JavaScript \uFEFF) imzası eklenir. Bu imza Excel'e dosyanın UTF-8 olduğunu kesin olarak bildirir ve herhangi bir içe aktarma sihirbazına gerek kalmaksızın tüm Türkçe karakterlerin ve döviz sembollerinin (₺, €) hatasız açılmasını garanti eder.
Modern veri mühendisliği, raporlama ve entegrasyon süreçlerinde yaygın olarak kullanılan veri formatlarının teknik yetenekleri ve mimari sınırları:
| Format | Standart / Spesifikasyon | Şema & Hiyerarşi | Dosya Boyutu & Sıkıştırma | Tip Güvenliği (Typing) | Excel & BI Uyumluluğu | İdeal Kullanım Alanı |
|---|---|---|---|---|---|---|
| JSON | RFC 8259 / ECMA-404 | Çok Katmanlı Ağaç (Nested Tree) | Orta (Anahtarlar her objede tekrarlanır) | Güçlü (String, Num, Bool, Array, Object) | Eklenti / PowerQuery gerekir | REST API, NoSQL veritabanları, mikroservis haberleşmesi. |
| CSV | IETF RFC 4180 | 2 Boyutlu Düz Tablo (Flat) | Küçük (Başlıklar yalnızca 1 kez yazılır) | Zayıf (Her hücre düz metindir) | Doğrudan & Yerel (%100 Uyumlu) | Veri analitiği, muhasebe aktarımı, veri ambarı (ETL) yüklemeleri. |
| TSV (Tab-Separated) | IANA MIME text/tab-separated | 2 Boyutlu Düz Tablo | Küçük (Sekme karakteri ayracı) | Zayıf (Düz metin) | Yüksek (Metin içi virgüllerle çakışmaz) | Doğal Dil İşleme (NLP), biyoinformatik, büyük sunucu logları. |
| Parquet | Apache Parquet Spec | Sütun Odaklı (Columnar Storage) | Ultra Küçük (Snappy / Gzip sütun sıkıştırma) | Çok Katı (Strict Types & Metadata) | Python / SQL Motoru gerekir | Büyük Veri (Big Data), Apache Spark, Snowflake, AWS Athena. |
| Excel (XLSX) | ECMA-376 / ISO 29500 | Çoklu Çalışma Sayfası & Formül | Büyük (ZIP içi sıkıştırılmış XML) | Zengin (Hücre formatlama, tarih, formül) | Yerel Microsoft Office Standardı | Finansal raporlama, pivot tablolar, son kullanıcı sunumları. |
Senaryo & Problem: Trendyol ve Shopify üzerinden günde ortalama 3.500 sipariş alan bir perakende markası, sipariş detaylarını REST API üzerinden JSON dizisi olarak çekmektedir. Ancak şirketin kullandığı kurumsal muhasebe yazılımı (Logo / Mikro ERP), yalnızca tekil satırlardan oluşan CSV formatında fatura kalemlerini içeri alabilmektedir. Orijinal JSON'da her sipariş nesnesinin altında fatura adresi (customer.billing_address) ve birden fazla ürün kalemi barındıran bir dizi (items: [ {...}, {...} ]) yer almaktadır. Dizi doğrudan CSV'ye çevrildiğinde ürünler tek hücrede metin olarak sıkışmakta ve ERP sistemi fatura kalemlerini ayıramamaktadır.
Uygulanan Çözüm: 1-to-N Düzleştirme (Unnesting & Denormalization) ETL algoritması uygulanmıştır. Her bir siparişin içindeki her bir ürün kalemi için bağımsız bir CSV satırı üretilmiş; sipariş numarası, müşteri adı ve vergi kimlik numarası gibi ana üst bilgiler ilgili satırlara kopyalanmıştır:
Teknik Sonuç: 3.500 karmaşık JSON sipariş dokümanı 8.200 satırlık düzleştirilmiş CSV tablosuna dönüştürülmüştür. ERP içe aktarma aracı dosyayı 2 saniyede sıfır hatayla işlemiş; muhasebe departmanının her gün 4 saat süren manuel fatura işleme yükü tamamen ortadan kaldırılmıştır.
Senaryo & Problem: Bir fintech girişiminin kullanıcı panelinde, müşterilerin hesap hareketlerini CSV formatında indirmesini sağlayan bir dışa aktarma modülü bulunmaktadır. Sistemde iki ciddi kriz tespit edilmiştir:
Havale / Şirket Gideri - Çağlar) Excel'de açıldığında Åirket Gideri - ÇaÄŸlar şeklinde okunamaz hale gelmektedir.=CMD|' /C calc'!A0 şeklinde kaydetmiştir. Bu veri CSV olarak dışa aktarılıp muhasebeci tarafından Excel'de açıldığında dinamik veri değişimi (DDE) protokolü üzerinden hesap makinesini çalıştırmış ve potansiyel bir uzaktan kod yürütme (RCE) riski oluşturmuştur.Uygulanan Çözüm: Çıktı motoruna hem Byte Order Mark (BOM) hem de CSV Sanitizasyon filtresi entegre edilmiştir:
Teknik Sonuç: BOM imzası sayesinde Excel tüm Türkçe karakterleri anında tanıdı ve bozulma sıfırlandı. Formül enjeksiyonu koruması sayesinde zararlı komutlar Excel tarafından çalıştırılabilir makro olarak değil, güvenli düz metin olarak hücreye yazıldı ve siber güvenlik açığı kapatıldı.
| Hata Tipi | Görülen Semptom & Risk | Hatalı / Eksik Uygulama | Doğru & Güvenli Yaklaşım |
|---|---|---|---|
| 1. UTF-8 BOM Eksikliği | CSV Excel'de açıldığında Türkçe karakterler (ş, ğ, ı, ö, ç) bozulur (Mojibake). | Düz metin UTF-8 olarak dosya indirtmek. | Dosya içeriğinin en başına \uFEFF (0xEF, 0xBB, 0xBF) bayt imzasını ekleyin. |
| 2. Hücre İçi Virgül Kaçırmama | Adres veya açıklamada virgül varsa hücre bölünür; tüm takip eden sütunlar yana kayar. | row.join(',') ile doğrudan birleştirmek. |
RFC 4180 uyarınca hücreleri çift tırnak içine alın: '"' + val.replace(/"/g, '""') + '"'. |
| 3. Heterojen JSON Başlık Kaybı | MongoDB gibi yapılarda sonraki objelerde olan yeni anahtarlar ilk objede yoksa kaybolur. | Object.keys(data[0]) ile yalnızca ilk objeyi taramak. |
Tüm objeleri döngüyle tarayıp tüm anahtarların birleşim kümesini (Set/Union) başlık yapın. |
| 4. CSV Formula Injection İhmali | =1+1 veya =cmd| ile başlayan veriler Excel'de komut veya formül çalıştırır. |
Kullanıcı girdisini ham haliyle CSV hücresine yazmak. | =, +, -, @ ile başlayan değerlerin başına tek tırnak (') ekleyin. |
| 5. Sayısal Kodların Sıfır Kaybı | Excel TCKN, Vergi No, Telefon veya IBAN'ı sayı kabul edip baştaki sıfırları (0535...) siler. | Telefon numarasını doğrudan sayı olarak CSV'ye basmak. | CSV'de formül formatı kullanarak metne zorlayın: '="05351234567"' veya metin hücresi olarak saklayın. |
| 6. Bölgesel Ayraç Uyuşmazlığı | Türkiye ve Avrupa Excel'lerinde ondalık ayracı virgül olduğu için virgüllü CSV tek sütuna yığılır. | Her lokasyon için sabit virgül (,) ayracı kullanmak. |
Yerel kullanıcılar için noktalı virgül (;) seçeneği sunun veya dosya başına sep=, direktifi koyun. |
E-ticaret pazaryerleri, muhasebe yazılımları, CRM ve özel veritabanları arasında sıfır veri kaybı garantili, yüksek performanslı ETL veri köprüleri inşa ediyoruz. İşletmenizi otomatikleştirmek için bize ulaşın.