0Pricing
Go Academy · Ders

JSON ve CSV Akışı

Büyük veriler için json.Decoder ve encoding/csv

JSON ve CSV Akışı, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Akış işlemleri neden kullanılır?

Büyük JSON veya CSV dosyalarının tamamını belleğe yüklemek, yığın kullanımının artmasına neden olur. Akış işlemi kayıtları tek tek işler ve dosya boyutundan bağımsız olarak bellek kullanımını sabit tutar.

Akış işlemleri için json.Decoder

json.NewDecoder, herhangi bir io.Reader kaynağını sarar. JSON belirteç akışında ilerlemek için Token() kullanın veya JSON dizileri için bir döngü içinde Decode çağırın.

dec := json.NewDecoder(file)
// consume opening [
for dec.More() {
    var record Record
    dec.Decode(&record)
    process(record)
}

Dizi başlangıcını algılama

Kod çözme döngüsünden önce açılış köşeli ayraç karakterini tüketmek için dec.Token() çağrısını yapın:

t, _ := dec.Token() // consume [
for dec.More() {
    var r Record
    dec.Decode(&r)
}

HTTP üzerinden akış işlemi

Tüm yanıtı arabelleğe almadan JSON'u doğrudan bir HTTP yanıt gövdesinden çözümleyin:

resp, _ := http.Get(url)
defer resp.Body.Close()
dec := json.NewDecoder(resp.Body)
for dec.More() {
    var item Item
    dec.Decode(&item)
    process(item)
}

encoding/csv okuyucusu

csv.NewReader, CSV satırlarını tek tek okur. Gerçek dünyadaki CSV çeşitlerini işlemek için LazyQuotes, TrimLeadingSpace ve Comment ayarlarını yapın.

r := csv.NewReader(file)
for {
    record, err := r.Read()
    if err == io.EOF { break }
    if err != nil { return err }
    process(record)
}

CSV üst bilgisini atlama

Üst bilgi satırını atlamak için ilk kaydı okuyup yok sayın:

r.Read() // discard header
for {
    record, err := r.Read()
    if err == io.EOF { break }
}

csv.Writer

csv.NewWriter ile CSV satırlarını tek tek yazın. Yazma işleminden sonra her zaman w.Flush() çağrısını yapın ve w.Error() değerini denetleyin.

w := csv.NewWriter(file)
w.Write([]string{"name", "age"})
w.Flush()
if err := w.Error(); err != nil { return err }

Özel ayraç

CSV dosyalarında bazen noktalı virgül veya sekme kullanılır. r.Comma değerini istediğiniz rune karakterine ayarlayın.

r := csv.NewReader(file)
r.Comma = ';' // semicolon-separated

JSON satırlarında akış işlemi (NDJSON)

Yeni satırla sınırlandırılmış JSON (her satırda bir JSON nesnesi) için akış işlemi basittir: satırları tek tek okuyun ve her satırı bağımsız olarak Unmarshal edin.

scanner := bufio.NewScanner(file)
for scanner.Scan() {
    var record Record
    json.Unmarshal(scanner.Bytes(), &record)
}

Bellek profilinin akışla işlenmesi

Akışla işlemede yığın tahsisi, dosya boyutundaki O yerine kayıt boyutundaki O düzeyinde kalır. 1 KB'lık kayıtlardan oluşan 1 GB'lık bir dosyada, akışla işleme yaklaşık 1 KB bellek kullanırken belleğe yükleme yaklaşık 1 GB bellek kullanır.

Akışla işlemede bağlam iptali

Bağlam iptal edildiğinde akışı durdurmak ve goroutine'lerin EOF'ye kadar okumaya devam etmesini önlemek için kod çözme döngüsünün içinde ctx.Done() çağrısını kontrol edin.

for dec.More() {
    select {
    case <-ctx.Done():
        return ctx.Err()
    default:
    }
    dec.Decode(&record)
}

Kısa Kontrol

json.Unmarshal yerine json.Decoder ile JSON'u akışla işlemenin avantajı nedir?

Özet: JSON ve CSV'yi akışla işleme

Temel noktalar:

  • json.Decoder: JSON dizileri için dec.More() ile döngü kullanır
  • csv.NewReader: satır satır okur; özel ayraçlar için Comma ayarlanır
  • NDJSON: bufio.Scanner + satır başına Unmarshal
  • Akışla işleme, dosya boyutundan bağımsız olarak belleği sabit tutar

Sıkça Sorulan Sorular

“JSON ve CSV Akışı” dersi ücretsiz mi?

Evet — “JSON ve CSV Akışı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“JSON ve CSV Akışı” dersinde ne öğreneceğim?

Büyük veriler için json.Decoder ve encoding/csv Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“JSON ve CSV Akışı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. os ve bufio ile Dosya Okuma
  2. Dosya ve Geçici Dosya Yazma
  3. JSON Kodlama ve Kod Çözme
  4. JSON ve CSV Akışı
← Go Academy Sayfasına Dön