CodeBlanks Logo Icon CodeBlanks

JSON sınırlandırmaları

JavaScript kursu · Orta seviye · Ders 110/134

JSON'in undefined, Date ve fonksiyonları nasıl ele aldığı gibi sınırlarını öğrenirsin.

Kaybedilen değerler

Bu biçim her JavaScript değerini desteklemez. Bir nesneyi metne çevirdiğinde undefined, fonksiyon ve Symbol içeren özellikler sessizce atılır; sonuç metinde yer almazlar.

const obj = { name: 'Alex', skip: undefined };
const text = stringify(obj);
// text === '{"name": "Alex"}'

Bu yüzden geri çevirdiğinde bu özellikler yok olur. Önemli veriyi başka bir türe çevirerek saklamalısın.

Tarihler metne dönüşür

Bir Date nesnesini metne çevirdiğinde sonuç bir metin olur: tarihin uluslararası biçimdeki dizilimi. Geri çevirdiğinde ise bir metin alırsın, tarih nesnesi değil.

const obj = { created: new Date() };
const text = stringify(obj);
const back = parse(text);
// back.created bir metin, Date değil

Tarihi geri yüklemek için new Date(back.created) ile yeniden Date nesnesine çevirmen gerekir.

Uygulama Fonksiyon kaybını gör

widget nesnesini metne çevir ve text değişkenine ata. onClick fonksiyonunun metinde olmadığını fark et.

Örnek çözümü göster
stringify metodunu widget ile çağır.
Örnek çözüm:
const text = stringify(widget);

Kendini test et

  1. stringify sonrası hangisi olur?

    stringify({a: 1, b: undefined})
    • a kaybolur
    • ikisi de kaybolur
    • b kaybolur, a kalır
    • ikisi de kalır
    Cevabı göster

    b kaybolur, a kalır — Doğru! undefined özellik atılır; sayılar kalır.

  2. Sınırı eşleştir

    undefined
    atılır
    Date
    metin olur
    fonksiyon
    düşer
    number
    korunur
  3. Date geri çevrildiğinde ne olur?

    parse(stringify({d: new Date(0)}))
    • Date nesnesi döner
    • null döner
    • Hata fırlatır
    • Metin döner
    Cevabı göster

    Metin döner — Doğru! Date metne çevrilince metin olur; geri çevrilince metin kalır.

Orta seviye bölümündeki tüm dersler