JSON sınırlandırmaları
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ğilTarihi 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
-
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.
-
Sınırı eşleştir
- undefined
- atılır
- Date
- metin olur
- fonksiyon
- düşer
- number
- korunur
-
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.