CSV Dosyalarını Tarayıcıda JSON Formatına Yerel Olarak Dönüştürme: Hassas Verilerin İstemci Tarafında Güvenli Ayrıştırılması
Hızlı Özet: Veri Gizliliğini Korumak İçin CSV'den JSON'a Nasıl Dönüştürülür?
Geleneksel çevrimiçi dönüştürücüler, CSV dosyalarınızı uzak bir bulut sunucusuna yükleyerek müşteri listeleri, finansal dökümler veya kimlik bilgileri gibi gizli verilerinizi risk altına atar. İstemci tarafında yerel dönüştürme, JavaScript'in modern FileReader API ve Web Streams mimarisini kullanarak dosyayı doğrudan bilgisayarınızın RAM belleğinde işler. Baytlar hiçbir zaman internete sızmaz, sunucu günlüğü tutulmaz ve GDPR / KVKK gereksinimlerine sıfır çabayla tam uyum sağlanır. Verilerinizi yerel geliştirici araçlarımızla güvenle dönüştürün.
İçindekiler
- 1. Sunucu Tabanlı Dönüştürmenin Güvenlik Riskleri
- 2. RFC 4180 ve Ayrıştırma Zorlukları
- 3. İstemci Tarafı Bellek Ayrıştırma Mimarisi
- 4. Otomatik Tip Çıkarımı ve Şema Haritalama
- 5. Büyük Dosyalar ve Web Worker Optimizasyonu
- 6. Yerel Dönüştürücü vs Bulut Dönüştürücüler
- 7. Adım Adım aFolks ile Dönüştürme
- 8. Sık Karşılaşılan Hatalar ve Çözümleri
- 9. Sıkça Sorulan Sorular (SSS)
1. Sunucu Tabanlı Dönüştürmenin Güvenlik Riskleri ve Sıfır Güven Mimarisi
Yazılım geliştiriciler, veri bilimcileri ve e-ticaret uzmanları gün boyunca yüzlerce CSV tablosunu JSON formatına dönüştürme ihtiyacı duyar. Ancak arama motoruna "CSV to JSON online" yazıldığında çıkan ilk 10 aracın neredeyse tamamı, dosyanızı HTTP POST isteği ile uzak bir bulut sunucusuna gönderir. Dosyanız sunucuda bir arka plan betiği (Python Pandas, Node.js veya PHP) tarafından ayrıştırılır ve ardından JSON çıktısı tarayıcınıza geri iletilir.
Bu klasik iş akışı, gizlilik ve kurumsal güvenlik standartları açısından kabul edilemez zafiyetler doğurur. Dosyanız üçüncü taraf sunucunun geçici dizinlerinde (`/tmp`), sunucu erişim günlüklerinde (access logs) ve sunucu yedekleme dizinlerinde kalıcı izler bırakabilir. Veritabanı dökümleri, müşteri e-posta listeleri, Amazon FBA gelir tabloları veya sağlık kayıtları içeren tabloların bu şekilde işlenmesi, KVKK, GDPR ve HIPAA regülasyonlarının açık bir ihlalidir.
Sıfır Güven (Zero-Trust) yaklaşımı, hiçbir harici sunucunun verinizi görmemesi gerektiğini savunur. Modern web tarayıcıları, gelişmiş JavaScript V8 motorları ve WebAssembly çalışma alanları sayesinde masaüstü uygulamaları kadar hızlı veri işleme gücüne kavuşmuştur. Verilerinizi makinenizden dışarı çıkarmadan işlemek artık bir tercih değil, profesyonel bir zorunluluktur.
2. RFC 4180 Standartları ve Yapılandırılmamış CSV Uç Noktaları
CSV (Virgülle Ayrılmış Değerler) formatı ilk bakışta çok basit görünür: her satır bir kaydı, her virgül ise bir sütunu temsil eder. Ancak pratikte CSV, dünyadaki en tutarsız veri biçimlerinden biridir. Gerçek dünyada RFC 4180 standardı doğru uygulanmadığında en deneyimli mühendisler dahi beklenmedik veri bozulmalarıyla karşılaşır.
En sık karşılaşılan yapısal zorluklar şunlardır:
- Metin İçi Virgüller (Embedded Commas): Müşteri adresleri veya ürün açıklamaları gibi alanlar serbest metin içerdiğinde virgül ayracı metnin içine karışır. Bu alanların standart gereği çift tırnak (`"`) ile çevrelenmesi zorunludur (örneğin:
"Atatürk Bulvarı, No: 45, Daire: 8"). İlkel bir `split(',')` fonksiyonu bu satırı yanlışlıkla 3 ayrı sütuna böler ve tüm şemayı bozar. - Kaçışlı Çift Tırnaklar (Escaped Quotes): Metin alanının kendi içinde çift tırnak işareti yer alıyorsa, RFC 4180 standardı bu işaretin ardışık iki çift tırnak (`""`) ile yazılmasını şart koşar. Ayrıştırıcının bu durumu tespit edip tek bir tırnak karakterine indirgemesi gerekir.
- Satır İçi Satır Sonu Karakterleri (Multi-line Records): Bir hücrenin içinde Enter tuşuna basılarak alt satıra geçilmiş olabilir. Zayıf ayrıştırıcılar dosyayı `split(' ')` ile böldüğü için bu tür kayıtları iki ayrı yarım satır olarak yorumlar ve JSON çıktısında sözdizimi felaketine yol açar.
- Bölgesel Ayraç Karmaşası: Türkiye ve Avrupa genelinde Microsoft Excel, ondalık basamak ayracı olarak virgül (`,`) kullandığı için CSV dosyalarında sütun ayırıcı olarak noktalı virgül (`;`) veya sekme karakteri (` `) kullanılır. Güçlü bir ayrıştırıcı bu durumu otomatik tespit edebilmelidir.
3. Web Tarayıcı Belleğinde Akış Halinde CSV Ayrıştırma Mimarisi
Verilerin istemci tarafında güvenle işlenmesi için modern web standartlarının sunduğu donanım seviyesi API'lerden yararlanılır. HTML5 ile hayatımıza giren FileReader API, yerel diskteki dosya baytlarını doğrudan işletim sistemi çekirdeğinden tarayıcı sanal alanına (sandbox) aktarır.
function parseCSVToTokens(text, delimiter = ',') {
const rows = [];
let currentRow = [];
let currentField = '';
let insideQuotes = false;
for (let i = 0; i < text.length; i++) {
const char = text[i];
const nextChar = text[i + 1];
if (char === '"') {
if (insideQuotes && nextChar === '"') {
currentField += '"';
i++; // İkinci tırnağı atla
} else {
insideQuotes = !insideQuotes; // Tırnak durumunu tersine çevir
}
} else if (char === delimiter && !insideQuotes) {
currentRow.push(currentField);
currentField = '';
} else if ((char === '
' || char === '
') && !insideQuotes) {
if (char === '
' && nextChar === '
') i++; // Windows CRLF desteği
currentRow.push(currentField);
if (currentRow.length > 1 || currentRow[0] !== '') {
rows.push(currentRow);
}
currentRow = [];
currentField = '';
} else {
currentField += char;
}
}
if (currentField !== '' || currentRow.length > 0) {
currentRow.push(currentField);
rows.push(currentRow);
}
return rows;
}
Yukarıdaki belirteç (finite-state machine tokenizer) yaklaşımı, dosyadaki tüm karakterleri tek tek durum kontrolünden geçirir. Tırnak işaretlerinin içinde kalan virgüller ve yeni satır karakterleri bayrak durumuna göre korunur. Böylece verileriniz hiçbir sunucuya uğramadan doğrudan RAM üzerinde temiz bir JSON dizisine dönüştürülür.
Verilerinizi Güvenle Dönüştürün
Hassas finansal ve operasyonel verilerinizi %100 çevrimdışı, sıfır sunucu yüklemesiyle JSON'a dönüştürün.
4. Otomatik Tip Çıkarımı (Type Inference) ve Şema Haritalama
CSV formatı doğası gereği tip bilgisi (metadata) taşımaz. Tablodaki her bir hücre ham bir metin dizesinden (string) ibarettir. Eğer tüm değerleri basitçe string olarak JSON'a aktarırsanız, sayısal hesaplamalar veya boolean kontrolleri gerektiren yazılımlarda ciddi hatalarla karşılaşırsınız.
Örneğin bir e-ticaret tablosundaki price sütunundaki 49.90 değerinin JSON içinde tırnak işaretleriyle "49.90" olarak yazılması, veritabanı sorgularında sıralama hatalarına ve matematiksel toplama problemlerine sebep olur. Gelişmiş bir yerel dönüştürücü motor şu akıllı tip kontrollerini yapmalıdır:
- Tamsayılar ve Ondalıklı Sayılar:
/^-?\d+(\.\d+)?$/düzenli ifadesine uyan değerler JavaScriptNumber()fonksiyonu ile ayrıştırılmalıdır. Ancak telefon numaraları veya sıfırla başlayan posta kodları (örneğin"05421234567") string olarak bırakılmalıdır; aksi takdirde baştaki sıfır kaybolur. - Mantıksal (Boolean) Değerler: Küçük-büyük harf duyarsız olarak
trueveyafalsedeğerleri doğrudan JSON boolean tipine çevrilmelidir. - Boş veya Null Değerler: Boş bırakılmış hücreler yapılandırmaya bağlı olarak ya
nulldeğerine eşitlenmeli ya da JSON nesnesinden tamamen hariç tutulmalıdır. - ISO Tarih Biçimleri: Standartlaşmış tarih dizileri (örneğin
2026-10-23T09:00:00Z) doğrulanarak korunmalıdır.
5. Büyük Boyutlu CSV Dosyaları için Bellek Yönetimi ve Web Workers
50 MB veya 500 MB boyutundaki devasa CSV dosyalarını tarayıcıda tek parça halinde okumaya çalışmak, JavaScript V8 motorunun heap bellek sınırlarına takılmasına ve sekmenin çökmesine (Out Of Memory) yol açabilir. Ayrıca tek iş parçacıklı (single-threaded) JavaScript motoru tüm gücünü ayrıştırmaya harcarsa kullanıcı arayüzü kilitlenir.
Bu sorunu çözmek için iki temel teknoloji bir arada kullanılır:
- Web Workers ile Arka Plan İşleme: Ağır ayrıştırma algoritması ana UI iş parçacığından ayrılarak bağımsız bir Web Worker arka plan iş parçacığına devredilir. Böylece kullanıcı ilerleme çubuğunu izleyebilir, dönüştürmeyi iptal edebilir veya tarayıcıyı kasmadan kullanmaya devam edebilir.
- Parçalı Okuma (Chunking Streams): Dosya tümüyle belleğe yüklenmek yerine, 64 KB veya 1 MB'lık parçalar (chunks) halinde akış olarak okunur. Her parça tamamlandıkça bellekteki yer serbest bırakılır ve çıktılanan JSON satırları disk indirme arabelleğine yönlendirilir.
6. Karşılaştırma Tablosu: İstemci Tarafı (Yerel) vs Bulut Tabanlı Dönüştürücüler
| Özellik / Güvenlik Kriteri | aFolks Yerel İstemci Motoru | Tipik Bulut / Sunucu Dönüştürücüler |
|---|---|---|
| Veri Transferi & İletim | Sıfır İletim • %100 Yerel RAM | Riskli • HTTP/HTTPS ile sunucuya yüklenir |
| Maksimum Gizlilik & Regülasyon | GDPR, KVKK, HIPAA ve SOC2 tam uyumlu | Sunucu saklama politikalarına bağımlı |
| Çevrimdışı Çalışabilme | Evet (Uçak modunda bile çalışır) | Hayır (Sürekli internet zorunlu) |
| Dönüştürme Hızı | Anında (Gecikme süresi = 0 ms ağ pingleme) | Yavaş (Yükleme süresi + Kuyruk + İndirme) |
| RFC 4180 Uç Nokta Desteği | Satır içi virgül, tırnak kaçışları ve CRLF | Çoğu araçta zayıf veya hatalı |
| Akıllı Tip Çıkarımı | Sayılar, Boolean ve Null otomatik tanıma | Genellikle tüm veriyi düz dize yapar |
7. Adım Adım Rehber: aFolks İstemci Tarafı Araçla CSV'yi JSON'a Dönüştürme
Aşağıdaki pratik adımları takip ederek herhangi bir CSV dosyasını saniyeler içinde temiz ve yapılandırılmış JSON biçimine dönüştürebilirsiniz:
1. Dosyayı Sürükleyin
CSV dosyanızı yerel dönüştürücü arayüzüne sürükleyip bırakın veya cihazınızdan seçin. Dosya asla sunucuya gitmez.
2. Ayarları Belirleyin
Ayraç türünü (virgül, noktalı virgül veya sekme), tip çıkarımını ve JSON girinti (indentation) biçimini seçin.
3. Anında İndirin
Oluşturulan geçerli JSON yapısını tek tıkla kopyalayın veya doğrudan `.json` uzantılı dosya olarak indirin.
8. Sık Karşılaşılan Hatalar ve Çözüm Yolları
CSV'den JSON'a dönüşüm sürecinde karşılaşılan yaygın teknik sorunlar ve bunların pratik çözümleri şunlardır:
- Görünmeyen UTF-8 BOM Karakterleri: Windows ve Excel tarafından eklenen Byte Order Mark karakteri, ilk anahtarın
"id"şeklinde bozulmasına yol açar. Dönüştürücü ilk 3 baytlık bayrakları temizlemelidir. - Farklı Satır Uzunlukları: Bazı satırlarda eksik sütun bulunması durumunda programın çökmemesi için eksik anahtarlara otomatik
nullatanmalıdır. - Ayrılmamış Özel Karakterler: Ters bölü (`\`) veya kontrol karakterleri içeren metinler JSON çıktısında geçersiz kaçış dizisi oluşturabilir; bu nedenle serileştirme öncesinde karakterler taranmalıdır.