JSON: bu nima, ma'lumotlar tuzilishi va ishlash prinsipi

Muallif: IT Sectr Nashr etilgan: 2026-03-08 O'qish vaqti: 8 daq

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'lumotlar uchun yengil matn formati
  • Olti ma'lumot turi — satr, son, boolean, null, massiv va obyekt har qanday tuzilmalar uchun
  • Universal — barcha dasturlash tillari va platformalar tomonidan qo'llab-quvvatlanadi
  • REST API — veb va mobil ilovalarda ma'lumot almashish uchun asosiy format
  • Inson o'qiy oladigan — sodda sintaksis asboblarsiz oson o'qiladi va tahrirlanadi

JSON nima?

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 qayerda ishlatiladi

  • REST API — server va mijoz o'rtasidagi so'rov va javoblar uchun asosiy format
  • Konfiguratsiya fayllari — package.json, tsconfig.json, .prettierrc
  • Ma'lumotlar bazalari — MongoDB, PostgreSQL (JSONB), Firebase Firestore
  • Mobil ilovalar — sozlamalarni saqlash, ma'lumotlarni keshlash
  • Veb texnologiyalar — WebSocket, Server-Sent Events, localStorage

JSON sintaksisi va ma'lumot turlari

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.

json
{
  "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

REST API da JSON

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.

Mobil platformalarda JSON parsening

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 JSON (Kotlin)

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.

kotlin
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 JSON (Swift)

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.

swift
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 vs XML: formatlarni taqqoslash

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

JSON bilan ishlash misollari

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.

Obyektni JSON ga serializatsiyalash

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.

typescript
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);

Ichma-ich JSON ni parsening qilish

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.

kotlin
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: strukturani validatsiyalash

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 qanday ma'lumot turlarini qo'llab-quvvatlaydi?

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.

JSON da izohlardan foydalanish mumkinmi?

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.

JSON PostgreSQL dagi JSONB dan qanday farq qiladi?

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.

JSON ning to'g'riligini qanday tekshirish mumkin?

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 faylining maksimal hajmi qancha?

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

  • JSON — strukturalashgan ma'lumot almashish uchun olti ma'lumot turiga ega minimalist matn formati
  • Tildan mustaqillik — JSON parserlari barcha mashhur dasturlash tillari uchun mavjud
  • REST API mobil ilovalarda so'rov va javoblar uchun standart format sifatida JSON dan foydalanadi
  • Parsening o'rnatilgan vositalar bilan amalga oshiriladi: Android da Gson/Moshi, iOS da Codable
  • JSON XML dan 2-3 baravar ixcham, ammo ishlash bo'yicha Protobuf dan ortda qoladi
  • Inson o'qiy oladigan — sintaksis maxsus asboblarsiz oson o'qiladi va tuzatiladi
  • JSON Schema — tuzilma va ma'lumot turlarini validatsiyalash uchun qo'shimcha vosita

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.

Loyihani muhokama qilish

Shuningdek o'qing