Tüm blog yazıları

JSON Nedir?

Web dünyasının ortak dili haline gelen JSON nedir? API'lerden dönen verilerin arkasındaki bu hafif ve hızlı formatı keşfedin. JavaScript Nesne Gösterimi'nin ne olduğunu, neden kullanıldığını ve temel söz dizimi kurallarını öğrenerek veri alışverişinde uzmanlaşın.

eminbasbayan6 dk okuma
JSON sembolü ve kod parçacığı ile web API'lerinde veri alışverişi konsepti

API'lere istek yaptığımızda bize veri dönüyor. Peki bu veri hangi formatta geliyor? Cevap: Neredeyse her zaman JSON.

JSON, web dünyasının ortak dili haline geldi. Farklı programlama dilleri, farklı sistemler arasında veri taşımanın en popüler yolu. Bu makalede JSON'ın ne olduğunu, nasıl yazıldığını ve JavaScript'te nasıl kullanıldığını öğreneceksiniz.

JSON Ne Demek?

JSON, "JavaScript Object Notation" ifadesinin kısaltmasıdır. Türkçesiyle "JavaScript Nesne Gösterimi".

Adında JavaScript geçiyor ama JSON, JavaScript değildir. JSON sadece bir veri formatıdır. Python, Java, PHP, C# - hangi dili kullanırsanız kullanın, JSON ile çalışabilirsiniz.

Neden JSON?

API'ler bize neden doğrudan HTML göndermez? Karşılaştıralım:

Senaryo: Bir Kullanıcının Bilgilerini Al

HTML ile (gereksiz yere uzun):

html
<!DOCTYPE html>
<html>
<head>
    <title>Kullanıcı Bilgileri</title>
    <style>
        .card { border: 1px solid #ccc; padding: 20px; }
        .name { font-size: 24px; font-weight: bold; }
        .email { color: #666; }
    </style>
</head>
<body>
    <div class="card">
        <p class="name">Elif Yıldız</p>
        <p class="email">elif@mail.com</p>
        <p class="age">28</p>
    </div>
</body>
</html>

30+ satır kod. Stil, yapı, etiketler... Oysa bize sadece 3 bilgi lazım: isim, email, yaş.

JSON ile (sadece veri):

json
{
    "isim": "Elif Yıldız",
    "email": "elif@mail.com",
    "yas": 28
}

5 satır. Sadece ihtiyacımız olan veri. Hızlı, hafif, net.

JSON'dan Önce: XML

JSON'dan önce XML (eXtensible Markup Language) kullanılıyordu. AJAX terimindeki "X" de XML'den gelir.

Aynı veri XML ile:

xml
<?xml version="1.0" encoding="UTF-8"?>
<kullanici>
    <isim>Elif Yıldız</isim>
    <email>elif@mail.com</email>
    <yas>28</yas>
</kullanici>

XML hâlâ bazı yerlerde kullanılıyor ama web API'lerinde JSON standart haline geldi. Nedenleri:

  • JSON daha kısa
  • JSON okumak daha kolay
  • JSON JavaScript ile doğal uyumlu
  • JSON parse etmek daha hızlı

JSON Söz Dizimi

JSON'ın katı kuralları var. Bu kuralları bilmezseniz hatalarla karşılaşırsınız.

Kural 1: Anahtarlar Çift Tırnak İçinde Olmalı

json
{ "isim": "Ahmet" }     ✓ Doğru
{ isim: "Ahmet" }       ✗ Yanlış (tırnaksız)
{ 'isim': 'Ahmet' }     ✗ Yanlış (tek tırnak)

JavaScript'te nesne tanımlarken tırnaksız yazabilirsiniz, ama JSON'da kesinlikle çift tırnak gerekli.

Kural 2: String Değerler Çift Tırnak İçinde

json
{ "sehir": "Ankara" }   ✓ Doğru
{ "sehir": 'Ankara' }   ✗ Yanlış (tek tırnak)
{ "sehir": Ankara }     ✗ Yanlış (tırnaksız)

Kural 3: Desteklenen Veri Tipleri

JSON'da kullanabileceğiniz veri tipleri sınırlıdır:

TipÖrnekAçıklama
String"Merhaba"Metin, çift tırnak içinde
Number42, 3.14, -10Tam sayı veya ondalık
Booleantrue, falseMantıksal değer
nullnullBoş/tanımsız değer
Array[1, 2, 3]Dizi/liste
Object{"a": 1}İç içe nesne

Kural 4: undefined YOKTUR

JavaScript'te undefined var ama JSON'da yok:

javascript
// JavaScript - Geçerli
const kullanici = {
    isim: "Can",
    adres: undefined
};

// JSON - Geçersiz!
{
    "isim": "Can",
    "adres": undefined   // HATA!
}

Eğer bir değer bilinmiyorsa null kullanın veya o alanı hiç eklemeyin.

Kural 5: Sonda Virgül Olmaz

json
{
    "isim": "Zeynep",
    "yas": 25,           // ← Bu virgül sorun değil
    "sehir": "İzmir"     // ← Sonda virgül YOK
}
json
{
    "isim": "Zeynep",
    "yas": 25,
    "sehir": "İzmir",    // ✗ HATA! Sonda virgül
}

Kural 6: Yorum Satırı Yazılamaz

JSON'da yorum yazamazsınız:

json
{
    "fiyat": 100,
    // Bu bir yorum - HATA!
    "kdv": 18
}

JSON Örnekleri

Basit Nesne

json
{
    "urunAdi": "Kablosuz Kulaklık",
    "marka": "SoundMax",
    "fiyat": 450.99,
    "stokta": true
}

İç İçe Nesne

json
{
    "siparis_no": "SP-2024-001",
    "musteri": {
        "ad": "Murat Demir",
        "telefon": "555-123-4567",
        "adres": {
            "il": "İstanbul",
            "ilce": "Kadıköy",
            "mahalle": "Caferağa"
        }
    },
    "toplam": 1250.00
}

Dizi (Array)

json
{
    "oyuncu": "Gamer42",
    "skorlar": [1500, 2300, 1800, 2100, 2500],
    "rozetler": ["Çaylak", "Avcı", "Şampiyon"]
}

Nesne Dizisi

json
{
    "filmler": [
        {
            "ad": "Inception",
            "yil": 2010,
            "puan": 8.8
        },
        {
            "ad": "Interstellar",
            "yil": 2014,
            "puan": 8.6
        },
        {
            "ad": "The Dark Knight",
            "yil": 2008,
            "puan": 9.0
        }
    ]
}

JavaScript'te JSON İşlemleri

JavaScript'te JSON ile çalışmak için iki temel metod var:

JSON.parse() - JSON'dan JavaScript'e

API'den gelen veri string formatındadır. Bunu JavaScript nesnesine çevirmek için JSON.parse() kullanırız.

javascript
// API'den gelen string (ham veri)
const jsonString = '{"urun": "Mouse", "fiyat": 120, "stok": true}';

// Bu bir string, nesne gibi erişemezsiniz
console.log(jsonString.urun);  // undefined (çalışmaz!)

// JSON.parse ile çevirin
const urun = JSON.parse(jsonString);

// Artık nesne gibi kullanabilirsiniz
console.log(urun.urun);   // "Mouse"
console.log(urun.fiyat);  // 120
console.log(urun.stok);   // true

JSON.stringify() - JavaScript'ten JSON'a

Bir veriyi API'ye göndermek istediğinizde JavaScript nesnesini JSON string'e çevirmeniz gerekir.

javascript
// JavaScript nesnesi
const sepet = {
    urunler: ["Laptop", "Mouse", "Klavye"],
    toplamTutar: 18500,
    kargoUcretsiz: true
};

// JSON string'e çevir
const jsonString = JSON.stringify(sepet);

console.log(jsonString);
// '{"urunler":["Laptop","Mouse","Klavye"],"toplamTutar":18500,"kargoUcretsiz":true}'

// Bu string'i API'ye gönderebilirsiniz

Güzel Formatlama

JSON.stringify() ile okunabilir format elde edebilirsiniz:

javascript
const veri = { isim: "Test", deger: 42 };

// Normal (tek satır)
JSON.stringify(veri);
// '{"isim":"Test","deger":42}'

// Güzel formatlanmış (2 boşluk girinti)
JSON.stringify(veri, null, 2);
/*
{
  "isim": "Test",
  "deger": 42
}
*/

Sık Yapılan Hatalar

Hata 1: Zaten Nesne Olan Veriyi Parse Etmeye Çalışmak

javascript
const veri = { isim: "Ali" };  // Bu zaten bir nesne

JSON.parse(veri);  // HATA! String bekliyordu, nesne geldi

Hata 2: Geçersiz JSON Parse Etmeye Çalışmak

javascript
const bozukJson = "{ isim: 'Ali' }";  // Tek tırnak ve tırnaksız anahtar

JSON.parse(bozukJson);  // HATA! Geçersiz JSON

Hata 3: Parse Hatalarını Yakalamamak

javascript
// Kötü pratik
const veri = JSON.parse(bilinmeyenString);  // Hata olursa uygulama çöker

// İyi pratik
try {
    const veri = JSON.parse(bilinmeyenString);
    console.log(veri);
} catch (hata) {
    console.log("JSON parse edilemedi:", hata.message);
}

Gerçek Dünya Örneği

Bir e-ticaret API'sinden ürün listesi aldığınızı düşünün:

javascript
// API'den gelen yanıt (string)
const apiYaniti = `{
    "basarili": true,
    "urunSayisi": 3,
    "urunler": [
        {"id": 1, "ad": "Laptop", "fiyat": 15000},
        {"id": 2, "ad": "Telefon", "fiyat": 8000},
        {"id": 3, "ad": "Tablet", "fiyat": 5000}
    ]
}`;

// Parse et
const veri = JSON.parse(apiYaniti);

// Kullan
if (veri.basarili) {
    console.log(`${veri.urunSayisi} ürün bulundu:`);

    veri.urunler.forEach(urun => {
        console.log(`- ${urun.ad}: ${urun.fiyat} TL`);
    });
}

// Çıktı:
// 3 ürün bulundu:
// - Laptop: 15000 TL
// - Telefon: 8000 TL
// - Tablet: 5000 TL

JSON Doğrulama Araçları

JSON yazarken hata yapmak kolay. Bu araçlar JSON'unuzun geçerli olup olmadığını kontrol eder:

  • JSONLint (jsonlint.com) - Doğrulama ve formatlama
  • JSON Formatter (jsonformatter.org) - Görsel düzenleme
  • VS Code - JSON dosyalarında otomatik hata gösterimi

Özet

KavramAçıklama
JSONJavaScript Object Notation - veri formatı
AmaçSistemler arası veri taşıma
KurallarÇift tırnak, undefined yok, sonda virgül yok
JSON.parse()JSON string → JavaScript nesnesi
JSON.stringify()JavaScript nesnesi → JSON string

Sırada Ne Var?

JSON'ın ne olduğunu ve JavaScript'te nasıl kullanıldığını öğrendik.

Bir sonraki makalede API'leri test etmek için kullanılan araçları (Postman/Hoppscotch) inceleyeceğiz.

JavaScript Classes ile pratik uygulamalar, metotlar arası iletişim ve gerçek dünya kod örnekleri
JavaScript Dersleri9 dk okuma

JavaScript Classes - Pratik Uygulamalar

JavaScript class'ları ile pratik uygulamalara geçin! Metotlar arası iletişimden constructor'da metot çağırmaya, kod tekrarını azaltmaktan gerçek dünya senaryolarına kadar class kullanımının inceliklerini keşfedin. Kendi alışveriş sepeti örneğinizle bilginizi pekiştirin.

Yazıyı oku
JavaScript class yapısını gösteren bir kod örneği, ES6 ile modern nesne oluşturma
JavaScript Dersleri9 dk okuma

JavaScript Classes

ES6 ile JavaScript'e gelen class yapısı sayesinde nesne oluşturmak artık çok daha kolay ve düzenli! Constructor function karmaşasından kurtulup, okunabilir ve yönetilebilir kodlar yazmak isteyenler için modern JavaScript'in temel taşı olan class'ları tüm detaylarıyla keşfedin. Bu rehberle nesne şabl

Yazıyı oku
JavaScript kodunda Constructor Function ve new keyword'ü ile nesne oluşturma örnekleri
JavaScript Dersleri8 dk okuma

Constructor Functions ve new Keyword

Factory Function'ların hafıza israfı sorununa Constructor Function'lar ve new keyword'ü ile son verin! Metotları paylaştırarak JavaScript objelerini daha verimli nasıl oluşturacağınızı, new'in perde arkasında neler yaptığını ve prototype sisteminin gücünü bu rehberde keşfedin.

Yazıyı oku

Çerez tercihlerin

Platformun çalışması için zorunlu çerezler kullanıyoruz. İzin verirsen anonim kullanım verilerini ölçüyoruz. Ayrıntıları incele