JavaScript JSON formati (stringify, parse)
fetch darsida server javobini json() bilan o’qidik.
Endi shu formatning o’ziga qaraymiz: u dasturlar orasida ma’lumot almashishning
eng keng tarqalgan usuli.
JSON nima
Ko’rinishi JavaScript obyektiga o’xshaydi, lekin bu matn:
{
"ism": "Aziz",
"yosh": 20,
"faol": true,
"guruhlar": ["IT-21", "Web"],
"manzil": { "shahar": "Toshkent" },
"telefon": null
}
stringify — obyektdan matnga
Natija — bitta qatorli matn. typeof buni tasdiqlaydi: endi bu obyekt emas,
string.
parse — matndan obyektga
Qayta obyektga aylandi — endi xossalarga murojaat qilish va son bilan amal bajarish mumkin.
Chiroyli formatlash
Uchinchi argument — chekinish:
2 — ikki probel chekinish. Fayl saqlash yoki xatolarni ko’rishda qulay;
tarmoqqa yuborishda esa qisqa shakl ishlatiladi.
JSON qoidalari — obyektdan farqi
JSON JavaScript obyektidan qattiqroq:
Qoidalar:
- Kalitlar har doim qo’shtirnoq ichida:
"ism",ismemas; - matnlar faqat qo’shtirnoq, bitta tirnoq emas;
- oxirgi elementdan keyin vergul qo’yilmaydi;
- izoh yozib bo’lmaydi.
Nima yo’qoladi
Hamma qiymat ham JSON’ga sig’maydi:
Natijada:
undefinedva funksiyalar butunlay tushib qoladi;Datematnga aylanadi —parsedan keyinDateemas,stringbo’ladi;InfinityvaNaN→null.
Chuqur nusxa olish
Spread faqat bir qavat nusxa oladi. JSON orqali esa to’liq nusxa olish mumkin:
Bu usul ishlaydi, lekin yuqoridagi cheklovlar bilan. Zamonaviy brauzerlarda
structuredClone() yaxshiroq — u Date va boshqa turlarni saqlaydi.
Xatoni ushlash
Tashqaridan kelgan JSON’ni har doim try/catch bilan o’qing:
Massiv ham JSON bo’ladi
API’lar ko’pincha aynan shunday massiv qaytaradi.
Amaliy mashq
- Uch xossali obyektni
JSON.stringifybilan matnga o’giring; - natijani
JSON.parsebilan qayta obyektga aylantiring; null, 2bilan chiroyli formatlang;- obyektga funksiya va
undefinedqo’shib, ular yo’qolishini ko’ring; - buzilgan JSON matnini
try/catchbilan o’qing; - ichma-ich obyektni JSON orqali chuqur nusxalang.
4-qadam formatning asosiy cheklovini ko’rsatadi.
Qisqacha xulosa
- JSON — ma’lumotni matn ko’rinishida yozish formati.
JSON.stringifyobyektni matnga,JSON.parsematnni obyektga o’giradi.- Uchinchi argument (
null, 2) chiroyli formatlaydi. - Kalitlar va matnlar qo’shtirnoq ichida bo’lishi shart.
undefined, funksiya yo’qoladi;Datematnga aylanadi.- Tashqi JSON’ni doim
try/catchbilan o’qing.
Keyingi darsda localStorage — ma’lumotni brauzerda saqlash.