Skip to main content

jq ile JSON Verilerini Dönüştürme: Güçlü Komut Satırı Aracı ⚙️


🎯 Bu Rehberde Ne Öğreneceksiniz

Bu rehberde, jq komut satırı aracını kullanarak büyük ve karmaşık JSON verilerini nasıl hızlıca filtreleyeceğinizi, dönüştüreceğinizi ve yeni yapılar oluşturacağınızı öğreneceksiniz.
YZ/ML (Yapay Zeka / Makine Öğrenimi) iş akışları ve DevOps süreçleri için vazgeçilmez olan bu araç sayesinde API yanıtlarını, günlük dosyalarını veya Kubernetes çıktılarından istediğiniz bilgiyi tek satır komutla çekebileceksiniz.


🧠 Teknik Özet

Ana Teknik Konu: jq (Command-line JSON Processor) kullanımı
Çözülen Problem:
JSON formatlı karmaşık verilerde filtreleme, toplama ve dönüştürme işlemlerini hızlı ve güvenilir biçimde yapmak.
İzlenen Adımlar:

  1. jq kurulumu ve kimlik operatörü ile test
  2. Dizi yineleme (.[]) ve veri çekme (.ad)
  3. Toplama ve eşleme (map, add)
  4. Koşullu filtreleme (select)
  5. Sonuçları tek bir JSON yapısında birleştirme

⚙️ 1. jq Kurulumu

Ubuntu / Debian Sistemlerinde

sudo apt install jq

macOS (Homebrew)


brew install jq

Windows Resmî jq sayfasından binary dosyasını indirip PATH’e ekleyin. Kurulumu doğrulamak için:


jq --version

🧩 2. İlk jq Komutunu Çalıştırma

Bir deneme JSON dosyası oluşturun:


nano denizCanlilari.json

Aşağıdaki içeriği kaydedin:


[
{ "ad": "Sammy", "tur": "köpekbalığı", "istridye": 5 },
{ "ad": "Bubbles", "tur": "orka", "istridye": 3 },
{ "ad": "Splish", "tur": "yunus", "istridye": 2 },
{ "ad": "Splash", "tur": "yunus", "istridye": 2 }
]

Kimlik Operatörü (.)


jq '.' denizCanlilari.json

Bu komut JSON’u pretty print olarak gösterir ve dosyayı değiştirmez.


🔍 3. Veri Çekme ve Filtreleme (.[] ve |)


jq '.[]' denizCanlilari.json

Her dizi elemanını ayrı ayrı listeler. Sadece ad alanlarını çekmek için:


jq '.[] | .ad' denizCanlilari.json

Tırnak işaretlerini kaldırmak istersen:


jq -r '.[] | .ad' denizCanlilari.json

➕ 4. Toplama ve Eşleme (map ve add)

Tüm istiridye sayılarını listele:


jq 'map(.istridye)' denizCanlilari.json

Toplamı bulmak için:


jq 'map(.istridye) | add' denizCanlilari.json

Çıktı: 12


⚙️ 5. Koşullu Hesaplama (select)

Sadece “yunus” türündeki canlıların istiridyelerini toplayalım:


jq 'map(select(.tur == "yunus").istridye) | add' denizCanlilari.json

Çıktı: 4


🧱 6. Verileri Yeni JSON Yapısına Dönüştürme

Tüm sonuçları tek JSON nesnesinde birleştirin:


jq '{
canlilar: map(.ad),
toplamIstiridye: map(.istridye) | add,
yunusIstiridye: map(select(.tur == "yunus").istridye) | add
}' denizCanlilari.json

Çıktı:


{
"canlilar": ["Sammy", "Bubbles", "Splish", "Splash"],
"toplamIstiridye": 12,
"yunusIstiridye": 4
}

🚀 İleri Düzey jq Teknikleri ve Kullanım Alanları

Büyük JSON Dosyalarında Yüksek Performans


jq --stream 'select(.[0] | length == 2) | .[1]' buyuk_veri.json

Akış (streaming) modu, devasa dosyaları belleğe yüklemeden işler.

Kubernetes Entegrasyonu


kubectl get pods -o json | jq '.items[] | select(.status.phase == "Running") | {ad: .metadata.name, dugum: .spec.nodeName}'

API Yanıtlarını Filtreleme


curl -s "https://api.rabisu.cloud/veriler" | jq -c '.[] | {ozellik1: .deger1, hedef: .sonuc}' > egitim_verisi.jsonl

💡 Sıkça Sorulan Sorular (SSS)

1. jq, Python veya Node.js’e göre ne zaman avantajlıdır?

Küçük veri filtreleme işlemlerinde, yüksek hız ve düşük bellek kullanımı sağlar. Shell script’lerle doğal olarak entegredir.

2. Eksik alanlarda hata almamak için ne yapmalıyım?

? operatörünü kullan:


jq '.canlilar[]? | .ozellik?' denizCanlilari.json

3. JSON’u CSV’ye dönüştürmek mümkün mü?

Evet, @csv filtresiyle kolayca:


jq -r '.[] | [.ad, .tur, .istridye] | @csv' denizCanlilari.json > canlilar.csv

4. jq ile toplu işlem yapılır mı?

Evet, JSONL dosyalarıyla -c bayrağını kullanabilirsin:


cat log_verisi.jsonl | jq -c 'select(.hata == true)'

🎯 Sonuç

Bu rehberle jq’nun temel ve ileri düzey kullanımını öğrendin:

JSON verilerini filtreleme, toplama ve dönüştürme

YZ/ML ve DevOps iş akışlarında verimlilik artırma

Büyük veri kümelerinde streaming moduyla yüksek performans

💡 Rabisu Cloud altyapında jq’yu hemen deneyerek veri süreçlerini hızlandırabilir, analiz iş akışlarını otomatikleştirebilirsin! ⚙️🚀