JSON metodlari, toJSON
Obyektni tarmoq orqali yuborish yoki faylda saqlash uchun uni matnga aylantirish kerak. JSON (JavaScript Object Notation) โ bu ma'lumotni almashish uchun umumiy qabul qilingan format. JavaScript'da JSON.stringify va JSON.parse metodlari mavjud.
JSON.stringify
JSON.stringify(obj) โ obyektni JSON satriga aylantiradi:
Hosil bo'lgan satr JSON-kodlangan (JSON-encoded) deb ataladi. Uning JavaScript obyektidan farqlari:
- Satrlar faqat ikki tirnoqda bo'ladi (bitta tirnoq yoki backtick yo'q);
- Obyekt kalitlari ham har doim ikki tirnoqda bo'ladi (
"ism",ismemas); - Ortiqcha bo'shliqlar olib tashlanadi.
Qo'llab-quvvatlanadigan turlar
JSON.stringify quyidagi turlarni qo'llab-quvvatlaydi: obyektlar, massivlar, satrlar, sonlar, mantiqiy qiymatlar (true/false) va null.
Ammo ba'zi turlar e'tiborsiz qoldiriladi yoki tashlab ketiladi:
- Funksiyalar (metodlar);
undefinedqiymatlar;- Simvol (Symbol) kalitlari va qiymatlari.
JSON.stringify xatolik beradi.Ichma-ich obyektlar
JSON.stringify ichma-ich obyekt va massivlarni ham to'liq aylantiradi โ hech qanday qo'shimcha kod kerak emas:
Bo'shliq (space) argumenti โ chiroyli chiqarish
JSON.stringifyning uchinchi argumenti โ chiroyli, o'qish oson formatlash uchun. Odatda unga bo'shliqlar soni beriladi:
null) โ replacer bo'lib, uni keyingi bo'limda tushuntiramiz. Chiroyli chiqarish faqat logga qarash uchun kerak; tarmoq orqali yuborishda odatda bo'shliqsiz (kichikroq) satr ishlatiladi.Replacer โ nimalarni saqlashni tanlash
Ikkinchi argument replacer โ u qaysi xossalarni JSON'ga kiritishni boshqaradi. U ikki xil bo'lishi mumkin:
Massiv โ faqat sanab o'tilgan kalitlar saqlanadi:
Funksiya โ har bir kalit-qiymat juftligi uchun chaqiriladi. Qaytargan qiymat saqlanadi; undefined qaytarsa, xossa tashlab ketiladi:
JSON.parse
JSON.parse(str) โ JSON satrini yana JavaScript obyektiga aylantiradi (bu stringifyning teskarisi):
Massivlarni ham xuddi shunday o'qiydi:
JSON.parse xatolik beradi.Reviver โ o'qishda qiymatlarni tiklash
JSON.parse(str, reviver) โ ikkinchi argument sifatida funksiya berilsa, u har bir kalit-qiymat juftligini o'qishda chaqiriladi. Bu, masalan, sana satrini yana Date obyektiga aylantirish uchun kerak:
toJSON metodi
Obyektlar toString metodiga o'xshab, toJSON metodiga ega bo'lishi mumkin. Agar u mavjud bo'lsa, JSON.stringify obyektni to'g'ridan-to'g'ri aylantirish o'rniga aynan shu metodni chaqiradi:
Date obyektida ham toJSON mavjud. Shuning uchun JSON.stringify sanalarni avtomatik ravishda standart ISO satr formatida saqlaydi.Xulosa
JSON.stringify(obj)โ obyektni JSON satriga aylantiradi;JSON.parse(str)โ JSON satrini yana obyektga o'giradi;- Qo'llab-quvvatlanadi: obyekt, massiv, satr, son, boolean,
null; - Tashlab ketiladi: funksiya,
undefined, simvol; - 3-argument (bo'shliq) โ chiroyli, o'qish oson formatlash uchun;
- Replacer (2-argument) โ qaysi xossalarni saqlashni tanlaydi;
- Reviver (parse'ning 2-argumenti) โ o'qishda qiymatlarni qayta tiklaydi;
toJSONโ obyektning maxsus JSON ko'rinishini belgilaydi.