JSON nima va veb-ilovalar ma’lumot almashishi qanday ishlaydi
Asoslar3 daqInnovialabs tahririyati
Qisqacha
JSON — tuzilmali ma’lumotlarni uzatish uchun matnli format: obyektlar, massivlar, satrlar, sonlar, true/false va null; frontend va backend u orqali HTTP da Content-Type: application/json sarlavhasi bilan ma’lumot almashadi.
JSON qisqacha
JSON (JavaScript Object Notation) — ma’lumotlarni uzatish uchun matnli format. U JavaScript obyektlariga o‘xshaydi, lekin bu shunchaki satr bo‘lib, uni deyarli har qanday til o‘qiy oladi: Python, PHP, Go, Java, C#.
Internet-do‘kon mahsulotlar ro‘yxatini ko‘rsatganda, brauzer uni serverdan ko‘pincha aynan JSON ko‘rinishida oladi:
{
"id": 42,
"name": "Ryukzak",
"price": 349000,
"inStock": true,
"tags": ["maktab", "sport"],
"discount": null
}
Sintaksis va ma’lumot turlari
JSON da bor-yo‘g‘i oltita tur mavjud:
| Tur | Misol |
|---|---|
| satr | "Toshkent" |
| son | 42, 3.14, -1e3 |
| mantiqiy | true, false |
| null | null |
| massiv | [1, 2, 3] |
| obyekt | {"key": "value"} |
JSON ni JavaScript’dan ajratib turadigan qat’iy qoidalar:
- Kalitlar faqat qo‘sh tirnoqda:
{"name": "Ali"},{name: 'Ali'}emas. - Satrlar faqat qo‘sh tirnoqda.
- Oxirgi elementdan keyin ortiqcha vergul yo‘q.
- Izohlar yo‘q.
undefined, funksiyalar, sanalar vaNaNyo‘q. Sanalar satr sifatida, odatda ISO 8601 formatida uzatiladi:"2026-03-15T10:00:00Z".
Frontend va backend JSON ni qanday almashadi
Odatiy sikl quyidagicha:
- Frontend obyektni satrga aylantiradi:
JSON.stringify(). - Uni HTTP so‘rov tanasida
Content-Type: application/jsonsarlavhasi bilan yuboradi. - Server satrni qayta obyektga aylantiradi, qayta ishlaydi va javobni ham JSON da qaytaradi.
- Frontend javobni o‘qiydi:
response.json()yokiJSON.parse().
const res = await fetch('/api/orders', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ productId: 42, qty: 2 }),
});
if (!res.ok) {
throw new Error(`HTTP ${res.status}`);
}
const order = await res.json();
Express serverida xuddi shu ishni bitta qator — app.use(express.json()) bajaradi: u kerakli sarlavhali so‘rov tanasini o‘qib, natijani req.body ga joylaydi.
Odatiy parsing xatolari
Unexpected token < in JSON— JSON o‘rniga HTML kelgan. Odatda bu 404 yoki 500 xato sahifasi, noto‘g‘ri API URL yoki kirish sahifasiga redirekt. DevTools dagi Network bo‘limini tekshiring.Unexpected end of JSON input— bo‘sh javob, masalan 204 statusi, yoki kesilgan tana. Tana bo‘lmasa,res.json()ni chaqirmang.- Bittalik tirnoq yoki ortiqcha vergul — JSON qo‘lda satrlarni ulash orqali yig‘ilgan. Har doim
JSON.stringifydan foydalaning. - Server so‘rov tanasini ko‘rmaydi —
Content-Type: application/jsonsarlavhasi yoki parsing middleware unutilgan. - Katta sonlar aniqligini yo‘qotadi — JavaScript’da
Number.MAX_SAFE_INTEGERdan katta sonlar yaxlitlanadi. Katta identifikatorlarni satr sifatida uzatgan ma’qul. - Sanalar satr bo‘lib keladi — bu normal holat. Ularni kerakli joyda
Datega aylantiring.
Yaxshi odat — parsingdan oldin res.ok va javobning Content-Type ini tekshirish, serverda esa kiruvchi ma’lumotlarni sxema bo‘yicha validatsiya qilish.
JSON, XML va form data
| JSON | XML | form data | |
|---|---|---|---|
| Qayerda uchraydi | REST API, konfiglar, mobil ilovalar | eski korporativ tizimlar, SOAP, bank va davlat integratsiyalari | HTML formalar, fayl yuklash |
| O‘qilishi | yuqori | pastroq, teglar ko‘p | kalit-qiymat juftliklari |
| Ichma-ich tuzilmalar | tabiiy | ha | noqulay |
| Fayllar | faqat base64 orqali | faqat base64 orqali | multipart orqali tabiiy |
| Brauzerda parsing | JSON.parse | DOMParser | FormData |
Qanday tanlash kerak:
- Oddiy API — JSON.
- Fayl yuklash —
multipart/form-data, metama’lumotlarni esa qo‘shni maydonga qo‘yish mumkin. - Faqat XML tushunadigan eski tizim bilan integratsiya — XML, bu yerda tanlov yo‘q.