JSON (JavaScript Object Notation) — JavaScript obyektlari sintaksisiga asoslangan yengil matnli ma'lumot almashish formatidir. U hamma joyda qo'llaniladi: REST API va konfiguratsiya fayllaridan tortib ma'lumotlar bazalari va mobil ilovalarda ma'lumotlarni saqlashgacha. Rasmiy JSON sayti ma'lumotiga ko'ra, format dasturlash tiliga bog'liq emas va deyarli barcha zamonaviy platformalar tomonidan qo'llab-quvvatlanadi. JSON mijoz va server o'rtasida ma'lumot uzatish uchun de-fakto standartga aylandi.
Asosiy ma'lumotlar
JSON — JavaScript sintaksisiga asoslangan strukturalashgan ma'lumotlarni taqdim etish uchun matn formatidir. JavaScript dan kelib chiqqaniga qaramay, format tildan butunlay mustaqil — parserlar va serializatorlar barcha mashhur dasturlash tillari uchun mavjud.
JSON tarixi 2000-yillarning boshida, Duglas Krokkford ma'lumot almashish uchun JavaScript sintaksisining kichik to'plamini ajratib olganida boshlangan. 2013-yilda format ECMA-404, keyin esa ISO/IEC 21778:2017 sifatida standartlashtirilgan. Nomlanishi JavaScript Object Notation degan ma'noni anglatadi.
JSON ning asosiy afzalligi — minimalist sintaksis. Ma'lumotlarni tavsiflash uchun faqat olti tur ishlatiladi: satr, son, boolean, null, massiv va obyekt. Bu ilovalarda ishlatiladigan har qanday ma'lumot tuzilmalarini taqdim etish uchun yetarli.
JSON sintaksisi juda sodda: ma'lumotlar kalit-qiymat juftliklari sifatida taqdim etiladi, bunda kalit qo'shtirnoq ichidagi satr, qiymat esa olti asosiy turdan biridir. Obyektlar figurali qavslarga, massivlar kvadrat qavslarga olinadi. Satrlar majburiy ravishda qo'shtirnoq ishlatadi, bitta tirnoq ruxsat etilmaydi.
JSON da sonlar butun yoki kasr, musbat yoki manfiy, eksponensial yozuvda bo'lishi mumkin. Boolean qiymatlar true va false literallari, qiymatning yo'qligi esa null bilan ifodalanadi. Massivlar istalgan turdagi qiymatlarning, shu jumladan ichma-ich massivlar va obyektlarning tartiblangan to'plamini o'z ichiga oladi.
{
"name": "JSON",
"type": "text",
"version": 2024,
"flexible": true,
"extensions": null,
"languages": [
"JavaScript",
"Python",
"Java"
],
"nested": {
"info": "ichma-ich joylashishni qo'llab-quvvatlash"
}
}
| Tur | Misol | Tavsif |
|---|---|---|
| Satr | “matn” |
Qo'shtirnoqda, escape ketma-ketliklari bilan |
| Son | 42 |
Butun, kasr, eksponensial |
| Boolean | true |
true yoki false — tirnoqsiz |
| null | null |
Qiymatning yo'qligi |
| Obyekt | {} |
Tartiblanmagan kalit-qiymat juftliklari to'plami |
| Massiv | [] |
Tartiblangan qiymatlar ro'yxati |
JSON mobil va veb rivojlanishida REST API uchun asosiy ma'lumot almashish formatidir. Server javob tanasida JSON yuboradi, mijoz — so'rov tanasida. JSON uchun standart Content-Type sarlavhasi application/json hisoblanadi.
Zamonaviy REST API lar barcha turdagi ma'lumotlarni uzatish uchun JSON dan foydalanadi: oddiy ro'yxatlardan tortib ob'ektlar o'rtasidagi munosabatlar bilan murakkab ichma-ich tuzilmalargacha. Mijoz kutubxonasi (masalan, JavaScript da Axios yoki Android da Retrofit) avtomatik ravishda JSON ni serializatsiya va deserializatsiya qiladi, dasturchini qo'lda parseningdan xalos qiladi.
REST API da JSON ning muhim afzalligi — so'rov parametrlari orqali qisman ma'lumot uzatish (partial response) imkoniyati, shuningdek serverga qo'shimcha so'rovlarsiz ichma-ich resurslarni qo'llab-quvvatlash.
JSON parsening mobil platformalarda o'rnatilgan vositalar bilan amalga oshiriladi. Android Google dan Gson yoki Square dan Moshi kutubxonalaridan, iOS esa JSONDecoder bilan Codable protokolidan foydalanadi. Har bir platforma JSON ni native ob'ektlarga va aksincha aylantirish uchun qulay vositalarni taqdim etadi.
Android da Gson yoki Moshi dan foydalanish yondashuvi mashhur. @SerializedName annotatsiyalari bilan data class aniqlash va deserializatsiya uchun fromJson chaqirish kifoya. Kutubxona avtomatik ravishda JSON dagi maydon nomlarini sinf maydonlari bilan moslashtiradi.
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
data class User(
@SerializedName("id") val id: Int,
@SerializedName("name") val name: String,
@SerializedName("email") val email: String
)
fun parseJson(jsonString: String): User {
val gson = Gson()
return gson.fromJson(jsonString, User::class.java)
}
iOS da JSONDecoder bilan o'rnatilgan Codable protokoli ishlatiladi. Ma'lumotlar tuzilmasi Codable protokoli bilan struct sifatida e'lon qilinadi, keyin JSON bir qator bilan pars qilinadi. JSONEncoder teskari serializatsiyani amalga oshiradi — ob'ektni serverga yuborish uchun JSON ga aylantiradi.
import Foundation
struct User: Codable {
let id: Int
let name: String
let email: String
}
func parseJSON(from data: Data) throws -> User {
let decoder = JSONDecoder()
return try decoder.decode(User.self, from: data)
}
JSON va XML — strukturalashgan ma'lumotlarni uzatish uchun ikkita asosiy format. JSON soddalik va ishlashda, XML esa qat'iylik va validatsiyada ustun. Ularning o'rtasida tanlov loyiha talablariga bog'liq: REST API uchun ko'pincha JSON, sxemalari bo'lgan murakkab hujjatlar uchun XML tanlanadi.
XML har bir element uchun yopiluvchi teglarni talab qiladi, bu ma'lumotlar hajmini JSON ga nisbatan 2-3 baravar oshiradi. Shu bilan birga, XML nom fazolarini, XSD sxemalarini, atributlarni va XSLT transformatsiyasini qo'llab-quvvatlaydi, bu uni hujjat aylanishi va korporativ tizimlar integratsiyasi vazifalari uchun kuchliroq qiladi.
| Xususiyat | JSON | XML |
|---|---|---|
| Sintaksis | Minimalist, kalit-qiymat | Tegli, ochuvchi va yopuvchi teglar |
| Ma'lumot hajmi | Kompakt | JSON dan 2-3 baravar katta |
| Ma'lumot turlari | Olti asosiy tur | Faqat matn, turlar sxemalar orqali |
| Validatsiya | O'rnatilgani yo'q, JSON Schema orqali | XSD — qat'iy va yetuk |
| Nom fazolari | Yo'q | Namespace ni to'liq qo'llab-quvvatlash |
| Parsening tezligi | Yuqori | Murakkablik tufayli pastroq |
Misollar mobil rivojlanishda JSON bilan odatiy operatsiyalarni namoyish etadi: API javoblarini parsening qilish, yuborish uchun JSON yaratish va ichma-ich tuzilmalarni qayta ishlash. Ushbu naqshlarni tushunish har bir mobil ilova dasturchisi uchun zarurdir.
JavaScript da JSON.stringify obyektni JSON satriga aylantiradi. Ikkinchi argument bilan tanlab serializatsiya uchun kalitlar massivi yoki almashtiruvchi funktsiyani uzatish mumkin. Uchinchi argument formatlash uchun chekinishlarni belgilaydi.
interface Order {
id: string;
items: OrderItem[];
total: number;
createdAt: string;
}
const order: Order = {
id: 'ord_001',
items: [{ product: 'phone', quantity: 2 }],
total: 1599.98,
createdAt: '2026-07-03T10:00:00Z'
};
const jsonString = JSON.stringify(order, null, 2);
Kotlin da Moshi kutubxonasi bilan ichma-ich JSON ob'ektlari ichma-ich data class lar orqali qayta ishlanadi. @Json annotatsiyasi JSON dagi maydon nomini ko'rsatadi, agar u sinf xususiyati nomidan farq qilsa. Massivlar element turi bilan List sifatida taqdim etiladi.
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
data class ApiResponse(
val status: String,
val data: List<Product>,
val pagination: Pagination
)
data class Product(
val id: Int,
val title: String,
val price: Double
)
data class Pagination(
val page: Int,
val total: Int
)
val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
JSON Schema — XML uchun XSD ga o'xshash JSON hujjatining tuzilishini tavsiflash tilidir. JSON Schema yordamida majburiy maydonlar, ma'lumot turlari, qiymat diapazonlari, satr namunalari va ichma-ich tuzilmani o'rnatish mumkin. Sxema bo'yicha validatsiya ma'lumotlarni ilovada qayta ishlashdan oldin xatolarni aniqlaydi.
JSON Schema REST API hujjatlashtirish uchun OpenAPI (Swagger) da, kirish ma'lumotlarini validatsiyalash formalarida va testlashda keng qo'llaniladi. Sxema faylining o'zi JSON hujjatidir, bu uni o'qish uchun standart JSON parserlardan foydalanish imkonini beradi. Barcha mashhur dasturlash tillari uchun onlayn validatorlar va kutubxonalar mavjud.
Mobil rivojlanishda JSON Schema test bosqichida server javoblarini validatsiyalash va konfiguratsiya fayllarini tekshirish uchun ishlatiladi. Android da network-validator, json-schema-validator kabi kutubxonalar validatsiyani to'g'ridan-to'g'ri rivojlanish jarayoniga joylashtirishga, erta bosqichlarda xatolarning oldini olishga imkon beradi.
Tez-tez beriladigan savollar
JSON olti turni qo'llab-quvvatlaydi: satr (qo'shtirnoqda), son (butun va kasr), boolean (true/false), null, obyekt ({} ichida kalit-qiymat juftliklari) va massiv ([] ichida qiymatlar ro'yxati). Bu ilovalardagi har qanday ma'lumot tuzilmalari uchun yetarli.
Yo'q, JSON standarti izohlarni qo'llab-quvvatlamaydi. Agar izohlar kerak bo'lsa, JSON5 (kengaytirilgan JSON) dan foydalaning yoki tavsifli maydon qo'shing, masalan “_comment”: “tushuntirish”. VS Code kabi ba'zi vositalar konfiguratsiya JSON fayllarida izohlarni qo'llab-quvvatlaydi, ammo bu nostandart kengaytma.
JSONB — PostgreSQL da JSON ni saqlash uchun ikkilik format. Matnli JSON dan farqli o'laroq, JSONB tezroq ishlanadi, indekslashni (GIN indekslari) qo'llab-quvvatlaydi va kalitlarning yagonaligini kafolatlaydi. Shu bilan birga, JSONB metama'lumotlar qo'shilgani sababli diskda ko'proq joy egallaydi.
Tez tekshirish uchun JSONLint (jsonlint.com), JavaScript da try-catch bilan o'rnatilgan JSON.parse() yoki IDE plaginlaridan foydalaning. Validatsiya tirnoqlarning to'g'riligini, qavslarning yopilishini va turlarning mosligini tekshirishni o'z ichiga oladi. Murakkab sxemalar uchun JSON Schema Validator dan foydalaning.
JSON spetsifikatsiyasida cheklov yo'q. Amalda hajm qurilma xotirasi va parser imkoniyatlari bilan cheklanadi. Mobil ilovalar uchun bir javobda 1-2 MB dan oshmaslik, katta ma'lumotlar uchun esa sahifalash yoki oqimli uzatishdan foydalanish tavsiya etiladi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.