JSON'dan CSV'ye dönüşüm, yapılandırılmış verileri JSON formatından virgülle ayrılmış değerlere (CSV) aktarır; bu tablo formatı, elektronik tablolar, veritabanları ve analitik araçlar tarafından doğrudan kullanılır. JSON, verileri sabit bir şema olmadan iç içe nesneler ve diziler olarak saklar. CSV ise verileri alan adlarını tanımlayan bir başlık satırıyla satırlar ve sütunlar halinde saklar. Bu dönüşüm, API verilerinin elektronik tablolara ve veritabanlarına ulaşmasını sağlar.
CSV (Comma-Separated Values), RFC 4180 tarafından tanımlanmıştır. Her satır bir kayıttır ve bir satırdaki alanlar en yaygın olarak virgül olan bir sınırlayıcı karakterle ayrılır. Sınırlayıcı, çift tırnak veya satır sonu içeren alanlar çift tırnak içine alınmalı; içindeki tırnak işaretleri ise ikiye katlanarak kaçırılmalıdır. Bu kaçırma işlemi, JSON'dan CSV dönüştürücüyü elle yazarken hataların birincil kaynağıdır.
Girdiniz tutarlı anahtarlara sahip düz bir nesne dizisi olduğunda dönüşüm basittir. Her nesne bir satır olur ve her benzersiz anahtar bir sütun başlığı olur. İç içe nesneler ve diziler bir düzleştirme adımı gerektirir; nesneler arasındaki tutarsız anahtarlar ise eksik alanları işlemek için bir strateji gerektirir — genellikle hücre boş bırakılır. Güvenilir bir dönüştürücü tüm bu özel durumları otomatik olarak işler.
Neden JSON'dan CSV'ye Dönüştürülür?
API'ler JSON döndürür; ancak elektronik tablolar, SQL veritabanları ve BI araçları tablo verisi bekler. JSON'dan CSV'ye dönüşüm, özel içe aktarma betikleri yazmadan bu sistemler arasında veri taşımanızı sağlar.
⚡
Anında Tarayıcı Dönüşümü
JSON'u yapıştırın ve dosyayı hemen indirin. Sunucuya yükleme yok, harici API'lerden gelen dosya boyutu sınırı yok, işlem kuyruğu beklentisi yok.
🔒
Gizlilik Öncelikli İşlem
Verileriniz tarayıcınızda kalır. Dönüşüm tamamen cihazınızdaki JavaScript ile çalışır. Veritabanı dışa aktarmaları, kullanıcı kayıtları ve finansal veriler hiçbir zaman makinenizi terk etmez.
🔀
Çoklu Sınırlayıcı Desteği
Virgül, noktalı virgül, sekme veya pipe sınırlayıcıları arasından seçim yapın. Avrupa yerel ayarlarındaki elektronik tablolar için noktalı virgül, TSV dosyaları için sekme ya da eski sistem içe aktarmaları için pipe kullanın.
📋
Hesap Gerekmez
Sayfayı açın ve dönüştürün. Kayıt yok, API anahtarı yok, CLI kurulumu yok. Modern tarayıcısı olan her cihazda çalışır.
JSON'dan CSV'ye Kullanım Senaryoları
Elektronik Tablolar için API Veri Dışa Aktarma
REST API'leri JSON döndürür. Ürün yöneticileri ve analistler bu verilere Excel veya Google Sheets'te ihtiyaç duyar. API yanıtını CSV'ye dönüştürün ve herhangi bir elektronik tablo uygulamasında doğrudan açın.
Veritabanı Toplu İçe Aktarma
PostgreSQL COPY, MySQL LOAD DATA ve SQLite .import'un tümü CSV'yi kabul eder. Özel bir içe aktarma betiği yazmadan hızlı toplu yükleme için veri kümenizi tablo formatına dönüştürün.
ETL Pipeline Prototipleme
ETL pipeline'larının ham JSON olarak incelemesi zor olan ara çıktıları vardır. Bir adımın çıktısını CSV'ye dönüştürün ve tam pipeline'ı devreye almadan önce dönüşümleri doğrulamak için bir elektronik tabloda açın.
QA Test Verisi Hazırlama
QA mühendisleri test sabitlerini JSON olarak oluşturur; ancak birçok test çerçevesi ve veri güdümlü test aracı, parametreli test girdileri için CSV'yi kabul eder. Sabitleri manuel yeniden biçimlendirme olmadan CSV'ye dönüştürün.
Log Analizi ve Raporlama
Uygulamalardan ve bulut servislerinden gelen yapılandırılmış JSON logları, görselleştirme ve raporlama için Tableau, Power BI veya Looker gibi BI araçlarına aktarmak üzere CSV'ye dönüştürülebilir.
Akademik Veri İşleme
Açık veri API'leriyle çalışan öğrenciler ve araştırmacılar JSON yanıtları alır. CSV'ye dönüştürmek, ayrıştırma kodu yazmadan R, pandas, SPSS veya Excel'de analiz yapılmasına olanak tanır.
CSV Sınırlayıcı Referansı
Sınırlayıcı karakteri, her satırdaki alanları birbirinden ayırır. Virgül en yaygın olanıdır; ancak belirli bağlamlarda diğer sınırlayıcılar da standarttır. Yanlış sınırlayıcı seçimi, dosya açıldığında alanların yanlış birleşmesine veya bölünmesine neden olur.
Sınırlayıcı
Karakter
Uzantı
Ne Zaman Kullanılır
Comma
,
.csv
Default for most spreadsheets and databases
Semicolon
;
.csv
Standard in locales where comma is a decimal separator (DE, FR, BR)
Tab
\t
.tsv
Avoids escaping when field values contain commas or semicolons
Pipe
|
.csv
Used in fixed-width legacy systems and some ETL pipelines
CSV'de İç İçe JSON İşleme
CSV, iç içe nesneleri veya dizileri temsil etmek için yerel bir yola sahip olmayan düz bir formattır. JSON'unuz iç içe yapılar içerdiğinde, dönüştürücü bunları sütunlara düzleştirmelidir. Birkaç strateji vardır ve doğru seçim, CSV'nin nasıl kullanılacağına bağlıdır.
Nokta Notasyonu Düzleştirme
İç içe anahtarlar noktayla birleştirilir: {"address": {"city": "İstanbul"}} ifadesi, değeri İstanbul olan address.city adlı bir sütun haline gelir. Bu en yaygın yaklaşımdır ve iç içe alan referanslarını destekleyen araçlarla iyi çalışır.
Dizi Dizini Sütunları
Diziler numaralı sütunlara genişletilir: {"tags": ["a", "b"]} ifadesi tags.0 = a, tags.1 = b olur. Bu, tüm değerleri korur ancak diziler büyük olduğunda çok sayıda sütun oluşturur.
JSON Dizesi Geri Dönüşü
Karmaşık iç içe değerler, CSV hücresi içinde JSON dizesi olarak serileştirilir: hücre ham JSON metnini içerir. Bu, tam yapıyı korur; ancak tüketicinin hücre değerini ayrıştırması gerekir.
İç İçe Alanları Yoksayma
Bazı dönüştürücüler iç içe nesneleri ve dizileri tamamen atlayarak yalnızca skaler (dize, sayı, boolean, null) alanları tutar. Bu temiz bir CSV üretir ancak veri kaybına yol açar. Yalnızca iç içe alanların gerekmediğini bildiğinizde kullanışlıdır.
Kod Örnekleri
JSON'u programatik olarak CSV'ye dönüştürmek, başlık çıkarma, alan tırnaklama ve sınırlayıcı kaçırmayı gerektirir. Çoğu dilde CSV yazma için yerleşik veya standart kütüphane desteği mevcuttur.
# Using jq to convert JSON array to CSV
echo '[{"name":"Alice","age":30},{"name":"Bob","age":25}]' | \
jq -r '(.[0] | keys_unsorted) as $k | $k, (.[] | [.[$k[]]] ) | @csv'
# → "name","age"
# → "Alice",30
# → "Bob",25
# Using Miller (mlr) for streaming conversion
echo '[{"name":"Alice","age":30}]' | mlr --json --ocsv cat
# → name,age
# → Alice,30
Go
package main
import (
"encoding/csv"
"encoding/json"
"fmt"
"os"
)
func main() {
jsonStr := `[{"name":"Alice","age":30},{"name":"Bob","age":25}]`
var data []map[string]interface{}
json.Unmarshal([]byte(jsonStr), &data)
w := csv.NewWriter(os.Stdout)
// Write header
headers := []string{"name", "age"}
w.Write(headers)
// Write rows
for _, row := range data {
record := make([]string, len(headers))
for i, h := range headers {
record[i] = fmt.Sprintf("%v", row[h])
}
w.Write(record)
}
w.Flush()
// → name,age
// → Alice,30
// → Bob,25
}
Sıkça Sorulan Sorular
Bu dönüştürücü hangi JSON yapısını bekler?
Dönüştürücü, [{"name":"Ahmet"},{"name":"Ayşe"}]' gibi bir nesne JSON dizisi bekler. Dizideki her nesne çıktıda bir satır olur ve nesne anahtarları sütun başlıkları haline gelir. Dizi içine alınmamış tek bir JSON nesnesi tek satırlık tablo olarak işlenir.
İç içe nesneler ve diziler nasıl işlenir?
İç içe değerler nokta notasyonu kullanılarak düzleştirilir. Örneğin, {"address":{"city":"Ankara"}'} ifadesi address.city adlı bir sütun üretir. Diziler dizinli sütunlara genişletilir (tags.0, tags.1). Bu, çıktıyı düz tutarken verileri korur.
Nesnelerin farklı anahtarları olduğunda ne olur?
Dönüştürücü, dizideki tüm nesneler genelindeki benzersiz anahtarları toplar ve bunları sütun başlıkları olarak kullanır. Bir anahtarı olmayan nesneler, o sütun için boş bir hücre alır. Veri kaybı olmaz ve sütun sırası anahtarların ilk göründüğü sıraya göre belirlenir.
Virgül yerine noktalı virgül veya sekme kullanabilir miyim?
Evet. Araç virgül, noktalı virgül, sekme ve pipe sınırlayıcılarını destekler. Verileriniz veya yerel ayarınız ondalık ayırıcı olarak virgül kullanıyorsa (Almanca, Fransızca ve Brezilya elektronik tablolarında yaygın) noktalı virgül kullanın. Unix araçlarının kullandığı TSV dosyaları için sekme kullanın.
Dönüşüm kayıpsız mı?
Tutarlı skaler değerlere sahip düz JSON dizileri için evet. Çıktı dosyası aynı verileri içerir ve özdeş JSON'a geri dönüştürülebilir. İç içe yapılar için düzleştirme verinin şeklini değiştirir. Dizinli sütunlara veya JSON dizilerine serileştirilen dizi değerleri yeniden oluşturulabilir; ancak gidiş-dönüş, orijinal yapının bilinmesini gerektirir.
Ne kadar büyük bir JSON dosyasını dönüştürebilirim?
Araç tarayıcınızda çalışır ve verileri bellekte işler — modern cihazlarda 10–20 MB'a kadar dosyalar sorunsuz dönüştürülür. Daha büyük dosyalar için, verileri akış olarak işleyen jq, Miller veya csv modülüyle bir Python betiği gibi bir CLI aracı kullanın.
Bu araca hassas veri yapıştırmak güvenli mi?
Evet. Tüm işlemler JavaScript kullanılarak tarayıcınızda gerçekleşir. Hiçbir veri herhangi bir sunucuya gönderilmez. Tarayıcınızın geliştirici araçlarını açıp dönüşüm sırasında Ağ sekmesini kontrol ederek bunu doğrulayabilirsiniz.