IlmHamroh
JavaScript Full-stack/1-qism. Kompyuter, fayllar va terminal33/40-dars15 daqiqa
Mundarija (35)

JSON nima: sintaksis qoidalari, 6 ta tur va tipik xatolar

Qisqacha: JSON (JavaScript Object Notation) — dasturlar bir-biriga ma'lumot yuboradigan matnli format. Unda faqat 6 turdagi qiymat bor: satr, son, true/false, null, obyekt {} va massiv []. Qoidalari qat'iy: kalit va satrlar faqat qo'shtirnoqda ("), oxirgi elementdan keyin vergul yo'q, izoh yozib bo'lmaydi. Bitta xato butun faylni o'qib bo'lmas qiladi — shuning uchun JSON jq kabi vosita bilan tekshiriladi.

Bu darsda

  • JSON qaysi muammoni hal qilishini va qayerlarda uchrashini bilasiz.
  • Obyekt, massiv va 6 ta qiymat turini tanib, JSON faylni o'qiy olasiz.
  • O'zingiz to'g'ri JSON yozasiz va eng ko'p uchraydigan 6 ta xatoni topasiz.
  • jq bilan JSON'ni tekshirasiz, chiroyli qilasiz, siqasiz va undan qiymat olasiz.
  • JSONC, JSON5 va NDJSON oddiy JSON'dan nimasi bilan farq qilishini bilasiz.

Oldin bilishingiz kerak: Matnli va binar fayllar, Zamonaviy CLI vositalari (jq bo'limi), Exit code va buyruqlarni zanjirlash.

1. Nega bu kerak?

Telegram'dagi ob-havo botini tasavvur qiling. Bot serveri Python tilida yozilgan. Ob-havo ma'lumotini esa boshqa kompaniyaning Java'da yozilgan serveridan oladi. Natijani siz telefoningizda ko'rasiz, telefon ilovasi esa uchinchi tilda.

Uch xil til, uch xil dastur. Ular bir-birini qanday tushunadi?

Umumiy "til" kerak. Hayotdan o'xshatish: bank blankasi. Qaysi bankka borsangiz ham, pul o'tkazish blankasida bir xil maydonlar bor: "Kimdan", "Kimga", "Summa". Shakl bir xil bo'lgani uchun har qanday bank xodimi uni o'qiydi.

JSON (JavaScript Object Notation — "JavaScript obyekt yozuvi") — dasturlar uchun ana shunday blanka. Uni har qanday dasturlash tili o'qiy va yoza oladi. Nomida JavaScript bor, chunki yozuvi JavaScript'dan olingan. Lekin JSON'dan foydalanish uchun JavaScript bilish shart emas.

flowchart LR
    A["Server<br/>(Python)"] -- "JSON matn" --> B["Telefon ilovasi<br/>(Kotlin)"]
    A -- "JSON matn" --> C["Sayt<br/>(JavaScript)"]
    D["Boshqa servis<br/>(Java)"] -- "JSON matn" --> A

Bugun deyarli barcha veb-xizmatlar ma'lumotni JSON'da yuboradi. Bundan tashqari, dasturchining ko'p sozlama fayllari ham JSON: package.json, VS Code'ning settings.json va boshqalar. JSON — matnli fayl, uni odam ham, dastur ham o'qiy oladi.

2. Birinchi JSON

2.1 Obyekt — anketa

Mana kichik JSON:

json
{
  "ism": "Malika",
  "yosh": 21,
  "talaba": true
}

Buni har qatori bo'yicha o'qiymiz:

  • { va } — jingalak qavslar. Ular orasidagi hamma narsa bitta obyekt (object).
  • "ism": "Malika" — bitta kalit–qiymat juftligi. Chapda kalit (key) — ma'lumot nomi. O'ngda qiymat (value) — ma'lumotning o'zi. Ular orasida ikki nuqta :.
  • Juftliklar bir-biridan vergul bilan ajratiladi. Oxirgi juftlikdan keyin vergul yo'q.
  • Chapdagi bo'sh joylar (indent) — faqat chiroy uchun. JSON uchun ularning ahamiyati yo'q.

Obyekt — nomlangan qiymatlar to'plami. Xuddi anketa kabi: "Ism: ___", "Yosh: ___" maydonlari bor. Kalit — maydon nomi, qiymat — to'ldirilgan javob.

2.2 Massiv — ro'yxat

Ba'zan bitta kalitga bir nechta qiymat kerak. Masalan, Malika biladigan tillar:

json
{
  "ism": "Malika",
  "tillar": ["o'zbek", "rus", "ingliz"]
}

[ va ] — kvadrat qavslar. Ular orasidagi narsa massiv (array) — tartiblangan ro'yxat. Elementlar vergul bilan ajratiladi. Massivda kalit yo'q: elementlar o'z o'rni bilan farqlanadi — birinchi, ikkinchi, uchinchi.

O'xshatish: bozorga xarid ro'yxati. "1. Non, 2. Sut, 3. Tuxum" — har bir narsaning nomi emas, tartib raqami bor.

Tekshirib ko'ring: Quyidagida nechta obyekt va nechta massiv bor? {"shahar": "Samarqand", "tumanlar": ["Urgut", "Pastdarg'om"]}

Javob

Bitta obyekt (tashqi { }) va bitta massiv ([ ] — tumanlar ro'yxati). Obyektda ikki kalit bor: shahar va tumanlar. tumanlar ning qiymati — massiv.

3. Oltita qiymat turi

JSON'da qiymat faqat 6 turdan biri bo'lishi mumkin:

Tur Misol Qoida
Satr (string) "Toshkent" Faqat qo'shtirnoq " ichida
Son (number) 42, -15, 3.14 Qo'shtirnoqsiz
Mantiqiy qiymat (boolean) true, false Faqat kichik harf
Bo'sh qiymat null "Qiymat yo'q" degani
Obyekt (object) {"a": 1} Kalitlar — satr
Massiv (array) [1, 2, 3] Istalgan turdagi elementlar

Har biriga bittadan muhim tafsilot:

  • Satr. Satr ichida qo'shtirnoq kerak bo'lsa, oldiga teskari slesh qo'yiladi: "U \"Salom\" dedi". Teskari sleshning o'zi esa ikki marta yoziladi: "C:\\Users\\Ali". Bu ekranlash (escaping) deyiladi — maxsus belgini "oddiy belgi sifatida o'qi" deb belgilash. Satr ichida Enter bosib, yangi qatorga o'tib bo'lmaydi. Qator oxiri \n, tab esa \t deb yoziladi: "1-qator\n2-qator".
  • Son. 42 va "42" — ikki xil narsa. Birinchisi son, u bilan hisob-kitob qilinadi. Ikkinchisi — shunchaki "4" va "2" belgilari. Son 0 bilan boshlanmaydi (007 — xato) va + belgisisiz yoziladi.
  • Mantiqiy qiymat. Faqat ikkita: true (ha) va false (yo'q). True, TRUE, "true" — noto'g'ri yoki boshqa tur.
  • null. "Bu qiymat yo'q" degani. 0 ham, bo'sh satr "" ham emas. Masalan, "izoh": null — "mijoz izoh qoldirmagan".

Maslahat: Telefon raqami, pasport seriyasi, pochta indeksi — son emas, satr qilib yozing: "+998 90 000 00 00". Ular bilan hech kim qo'shish yoki ko'paytirish qilmaydi. Ustiga, ular 0 yoki + bilan boshlanishi mumkin — sonda bu mumkin emas.

JSON'da sana turi yo'q. Sanalar satr sifatida, xalqaro standart ko'rinishida yoziladi: "2026-09-27" yoki vaqti bilan "2026-09-27T10:30:00Z". Oxiridagi Z — "Grinvich vaqti bo'yicha".

JSON fayl doim UTF-8 kodlashda saqlanadi — bu standartning talabi. Shuning uchun "Toshkent" ham, "Тошкент" ham, "O'zbekiston" ham to'g'ridan-to'g'ri yozilaveradi.

3.1 Ichma-ich tuzilma

Obyekt ichida massiv, massiv ichida obyekt bo'lishi mumkin. Haqiqiy JSON'lar aynan shunday ko'rinadi. Mana onlayn do'kondagi buyurtma:

json
{
  "id": 1024,
  "mijoz": "Jasur Karimov",
  "telefon": "+998 90 000 00 00",
  "tolandi": true,
  "izoh": null,
  "manzil": {
    "shahar": "Toshkent",
    "tuman": "Chilonzor"
  },
  "mahsulotlar": [
    { "nom": "Non", "narx": 4000, "soni": 2 },
    { "nom": "Choy", "narx": 12000, "soni": 1 }
  ]
}

Bu yerda 6 ta turning hammasi bor. manzil — obyekt ichidagi obyekt. mahsulotlar — massiv, uning har bir elementi esa alohida obyekt. Bu faylni keyingi bo'limlarda buyurtma.json deb ishlatamiz.

Tekshirib ko'ring: Yuqoridagi buyurtmada "narx": 4000 va "telefon": "+998 90 000 00 00" — nega biri qo'shtirnoqsiz, ikkinchisi qo'shtirnoqda?

Javob

Narx — son: u bilan hisob qilinadi (4000 × 2 = 8000). Telefon esa raqamlardan iborat bo'lsa ham, u bilan hisob qilinmaydi va + bilan boshlanadi. Shuning uchun u satr.

4. Qat'iy qoidalar

JSON'ni dastur o'qiydi, dastur esa kechirimli emas. Mana buziladigan qoidalar.

4.1 Faqat qo'shtirnoq

Kalitlar ham, satrlar ham faqat " bilan o'raladi:

text
✅ {"holat": "ok"}
❌ {'holat': 'ok'}     — bittalik tirnoq mumkin emas
❌ {holat: "ok"}       — kalit qo'shtirnoqsiz bo'lmaydi

4.2 Oxirgi vergul yo'q

Oxirgi vergul (trailing comma) — ro'yxatning oxirgi elementidan keyin qolib ketgan vergul. JSON'da u xato:

text
{
  "ism": "Ali",
  "yosh": 25,
}

25 dan keyingi vergul "yana element bor" deb va'da beradi. Keyin esa } keladi — va'da bajarilmadi. Vergul faqat ikki element orasida turadi.

4.3 Vergul unutilmasin

Teskari xato ham bor — ikki juftlik orasida vergul yo'q:

text
{
  "ism": "Ali"
  "yosh": 25
}

4.4 Izoh yo'q

JSON ichiga // izoh yoki /* izoh */ yozib bo'lmaydi. JSON faqat ma'lumot uchun yaratilgan. Izoh kerak bo'lsa, uni oddiy kalit qilib yozish mumkin: "_izoh": "bu sozlama test uchun". Yoki boshqa formatni tanlash kerak — pastroqda, «JSON oilasi» bo'limida ko'ramiz.

4.5 Bitta ildiz

Butun fayl — bitta qiymat. Odatda bu bitta obyekt {...} yoki bitta massiv [...]. Ikkita obyektni yonma-yon yozib bo'lmaydi. Ular massivga o'ralishi kerak: [{...}, {...}].

Tekshirib ko'ring: ["olma", "nok", "anor",] — to'g'ri JSON'mi?

Javob

Yo'q. "anor" dan keyin oxirgi vergul bor. To'g'risi: ["olma", "nok", "anor"].

5. jq bilan tekshirish va ishlash

Zamonaviy CLI vositalari darsida jq ni o'rnatgan edik. Endi uni to'liq ishga solamiz.

5.1 Chiroyli qilish va tekshirish

bash
jq . buyurtma.json

Bu buyruq ikki ishni birdan qiladi. JSON to'g'ri bo'lsa — uni chiroyli, rangli ko'rinishda chiqaradi. Xato bo'lsa — xato qayerdaligini aytadi. Masalan, oxirgi vergulli faylda:

text
jq: parse error: Expected another key-value pair at line 4, column 1

Tarjimasi: "o'qish xatosi: 4-qator, 1-ustunda yana bitta kalit–qiymat juftligi kutilgan edi". Vergul "yana bor" degan, lekin 4-qatorda } keldi.

5.2 Faqat tekshirish

Ba'zan chiqarish shart emas — faqat "to'g'rimi?" degan javob kerak. Buning uchun empty filtri bor:

bash
jq empty buyurtma.json && echo "JSON to'g'ri"

JSON to'g'ri bo'lsa, jq hech narsa chiqarmaydi va exit code 0 bilan tugaydi. Shunda && dan keyingi echo ishlaydi. Xato bo'lsa — xato matni chiqadi, exit code esa 0 emas (jq da 5), echo ishlamaydi. Serverga yuklashdan oldin sozlama faylini shunday tekshirish qulay.

5.3 Siqish

Chiroyli JSON odam uchun. Tarmoq orqali yuborishda esa bo'sh joy va qator oxirlari keraksiz baytlar. -c (compact — "ixcham") flagi JSON'ni bitta qatorga siqadi:

bash
jq -c . buyurtma.json

Bizning buyurtmamiz 303 baytdan 233 baytga tushadi. Ma'lumot bir xil, hajm esa qariyb chorakka kamaydi. Millionlab so'rovlarda bu farq sezilarli.

5.4 Qiymat olish

. dan keyin kalit nomini yozsangiz — o'sha qiymat chiqadi. Ichma-ich kalitlar nuqta bilan ulanadi:

bash
jq '.mijoz' buyurtma.json            # "Jasur Karimov"
jq -r '.manzil.shahar' buyurtma.json  # Toshkent

Massiv elementi kvadrat qavs ichidagi o'rin raqami bilan olinadi. Raqamlash 0 dan boshlanadi: birinchi element — [0], ikkinchisi — [1].

bash
jq '.mahsulotlar[0].nom' buyurtma.json      # "Non"
jq '.mahsulotlar | length' buyurtma.json    # 2
jq -r '.mahsulotlar[].nom' buyurtma.json

Oxirgi buyruq natijasi:

text
Non
Choy
  • .mahsulotlar[0].nom — "mahsulotlar massivining birinchi elementi, uning nom kaliti".
  • | length — jq ichidagi o'z pipe'i: massivni length ga beradi, u elementlarni sanaydi.
  • [] (raqamsiz) — "har bir element". Shuning uchun har mahsulot nomi alohida qatorda chiqdi.

Diqqat: Yo'q kalitni so'rasangiz, jq xato bermaydi — null qaytaradi. jq '.yetkazish' buyurtma.json natijasi null. Kalit nomini xato yozsangiz ham shunday bo'ladi. null ko'rsangiz, avval kalit nomini tekshiring.

5.5 Boshqa usullar

  • VS Code JSON faylidagi xatoni qizil to'lqinli chiziq bilan ko'rsatadi. Shift + Alt + F (macOS'da Shift + Option + F) faylni chiroyli formatlaydi.
  • Onlayn tekshiruvchilar ham bor ("JSON validator" deb qidiring). Lekin ularga parol, token yoki mijozlar ma'lumoti bor JSON'ni qo'ymang — matn begona serverga ketadi.

Maslahat: Yuqoridagi usullar faqat yozuv to'g'riligini tekshiradi: vergul, qavs, qo'shtirnoq. "yosh kaliti bo'lishi shart va u son bo'lsin" degan talabni esa JSON Schema tekshiradi. Bu — JSON'ning o'zi bilan yozilgan "qoidalar varag'i". VS Code package.json ni ochganingizda kalitlarni taklif qilishi va xato kalitni belgilashi aynan shu sxema tufayli. Hozircha nomini bilib qo'ysangiz kifoya.

Tekshirib ko'ring: buyurtma.json dan birinchi mahsulotning sonini (soni) qaysi buyruq chiqaradi?

Javob

jq '.mahsulotlar[0].soni' buyurtma.json — natija 2. mahsulotlar — massiv, birinchi elementi [0] (raqamlash noldan), uning ichidan soni kaliti.

6. JSON oilasi: JSONC, JSON5, NDJSON

JSON'ning qat'iyligi ma'lumot almashish uchun yaxshi. Lekin odam qo'lda yozadigan sozlamalarda noqulay, katta loglarda esa sekin. Shuning uchun uning "qarindoshlari" paydo bo'lgan.

Format Nima qo'shadi Qayerda uchraydi
JSONC Izohlar (//, /* */) VS Code settings.json, tsconfig.json
JSON5 Izoh, bittalik tirnoq, oxirgi vergul, qo'shtirnoqsiz kalit Ba'zi sozlama fayllari (.json5)
NDJSON Har qatorda alohida JSON Loglar, katta ma'lumot (.jsonl, .ndjson)

6.1 JSONC — izohli JSON

JSONC (JSON with Comments) — izoh yozish mumkin bo'lgan JSON. Fayl nomi ko'pincha oddiy .json bo'lib qoladi. Masalan, VS Code sozlamalari:

text
{
  // Shrift o'lchami
  "editor.fontSize": 16
}

VS Code bu faylni o'zining JSONC o'quvchisi bilan o'qiydi, shuning uchun izoh xato emas. Lekin xuddi shu faylni jq ga bersangiz — xato. Kengaytma .json, ichi esa aslida JSONC. Oldingi darsdagi "kengaytma — faqat ishora" haqiqati bu yerda ham ishlaydi.

6.2 JSON5 — odam uchun JSON

JSON5 yanada erkin: bittalik tirnoq, qo'shtirnoqsiz kalitlar, oxirgi vergul ruxsat. Kam uchraydi. Ko'rsangiz, tanib olsangiz kifoya.

6.3 NDJSON — qatorma-qator JSON

NDJSON (Newline Delimited JSON — "qator oxiri bilan ajratilgan JSON"), boshqa nomi JSON Lines. Faylning har bir qatori — alohida, to'liq JSON obyekt:

text
{"id":1,"voqea":"kirish","vaqt":"10:00"}
{"id":2,"voqea":"xarid","vaqt":"10:02"}
{"id":3,"voqea":"chiqish","vaqt":"10:15"}

Bu butun holda to'g'ri JSON emas — «Bitta ildiz» qoidasini eslang: butun faylda bitta qiymat bo'lishi kerak. Lekin har qatori alohida to'g'ri JSON.

Nega shunday qilinadi? Tasavvur qiling, saytda kuniga million voqea bo'ladi. Oddiy JSON'da hammasi bitta katta massiv: yangi voqea qo'shish uchun oxiridagi ] ni ochib, qayta yopish kerak. Faylni o'qish uchun esa uni butunlay xotiraga yuklash kerak. NDJSON'da yangi voqea — shunchaki yangi qator (>> bilan qo'shiladi). O'qish ham qatorma-qator.

jq NDJSON'ni o'zi tushunadi — har qatorni alohida ishlaydi:

bash
jq -r '.voqea' loglar.jsonl
text
kirish
xarid
chiqish

Tekshirib ko'ring: VS Code'ning settings.json faylida // izoh qatori bor va VS Code xato ko'rsatmayapti. jq . settings.json esa xato beryapti. Nega?

Javob

Fayl aslida JSONC — izohli JSON. VS Code uni JSONC deb o'qiydi va izohni kechiradi. jq esa faqat qat'iy JSON'ni biladi, izohni xato deb hisoblaydi. Kengaytma .json bo'lsa ham, ichidagi format boshqa.

7. Ko'p uchraydigan xatolar

jq xato xabarlari qisqa va ba'zan g'alati. Bu yerda eng ko'p uchraydiganlari va ularning haqiqiy sababi.

7.1 Bittalik tirnoq

Faylning 2-qatori 'ism': "Ali" bo'lsa, jq shunday deydi:

text
jq: parse error: Invalid string literal; expected ", but got ' at line 2, column 8

Tarjimasi: "Noto'g'ri satr: " kutilgan edi, lekin ' keldi". Hamma ' ni " ga almashtiring.

7.2 Izoh yoki qo'shtirnoqsiz kalit

Faylning 2-qatori // izoh bo'lsa:

text
jq: parse error: Invalid numeric literal at line 2, column 5

Tarjimasi: "Noto'g'ri son". G'alati, to'g'rimi? Faylda son yo'q-ku! Sababi: qo'shtirnoqsiz yozilgan narsani (// izoh yoki ism) jq son yoki true kabi so'z deb o'qishga urindi va uddalay olmadi. Qoida: Invalid numeric literal ko'rsangiz — ko'rsatilgan qatorda qo'shtirnoqsiz matn qidiring: izoh, qo'shtirnoqsiz kalit yoki True kabi katta harfli so'z.

7.3 Vergul yetishmaydi

text
jq: parse error: Expected separator between values at line 3, column 8

Tarjimasi: "Qiymatlar orasida ajratgich (vergul) kutilgan edi". Ko'rsatilgan qatordan oldingi qator oxiriga qarang — vergul odatda o'sha yerda tushib qolgan.

7.4 Windows yo'li

"yol": "C:\Users\Ali" — \U ni JSON maxsus belgi boshlanishi deb tushunadi va xato beradi:

text
jq: parse error: Invalid escape at line 2, column 23

Tarjimasi: "Noto'g'ri ekranlash". Teskari sleshni ikki marta yozing: "C:\\Users\\Ali". Yoki oddiy slesh ishlating: "C:/Users/Ali" — Windows buni ham tushunadi.

7.5 Ko'rinmas BOM

Matn kodlash darsida ko'rgan edik: fayl "UTF-8 with BOM" bilan saqlansa, boshida ko'rinmas EF BB BF baytlari bo'ladi. jq ning yangi versiyalari BOM'ni kechiradi. Lekin ko'p dasturlar, masalan JavaScript'ning JSON.parse, bunday faylni o'qiy olmaydi. Xato matni g'alati ko'rinadi: Unexpected token '' — qo'shtirnoq ichi bo'shdek, aslida u yerda ko'rinmas BOM belgisi turibdi. xxd -l 3 fayl.json bilan tekshiring va faylni BOM'siz UTF-8 qilib qayta saqlang. VS Code'da: pastki paneldagi UTF-8 with BOM yozuvini bosing, keyin Save with Encoding → UTF-8.

Maslahat: Kelajakda JavaScript'da JSON'ni JSON.parse bilan o'qiysiz. Uning xato xabarlari boshqacha, lekin ma'nosi o'sha: Expected double-quoted property name — "qo'shtirnoqli kalit nomi kutilgan edi" (ko'pincha oxirgi vergul), Bad escaped character — "noto'g'ri ekranlangan belgi". Buni JavaScript'dagi JSON darsida o'rganamiz.

8. Mashqlar

1-mashq (oson): Uchta xato

Quyidagi JSON'da 3 ta xato bor. Toping va to'g'rilang:

text
{
  'nomi': "Smartfon",
  "narxi": 3500000,
  "mavjud": true,
  // ombordagi qoldiq
}
Yechim
  1. 'nomi' — bittalik tirnoq. To'g'risi: "nomi".
  2. // ombordagi qoldiq — izoh. JSON'da izoh yo'q, o'chiramiz.
  3. true dan keyingi vergul — izohni o'chirgach, u oxirgi vergulga aylanadi. Uni ham o'chiramiz.

To'g'ri ko'rinishi:

json
{
  "nomi": "Smartfon",
  "narxi": 3500000,
  "mavjud": true
}

Tekshirish: faylga saqlab, jq empty fayl.json && echo ok bajaring — ok chiqishi kerak.

2-mashq (o'rta): O'zingiz yozing

Quyidagi ma'lumotni JSON'ga aylantiring. Bo'sh joylarni to'ldiring:

  • Kursant: Dilnoza, 19 yosh.
  • Kursni to'lagan: ha.
  • Telegram: hali kiritilmagan.
  • Tugatgan darslari: 12, 15, 18.
text
{
  "ism": "Dilnoza",
  "yosh": 19,
  "tolagan": ___,
  "telegram": ___,
  "darslar": [12, 15, 18]
}

tolagan ning qiymati:

telegram ning qiymati:

Yechim
json
{
  "ism": "Dilnoza",
  "yosh": 19,
  "tolagan": true,
  "telegram": null,
  "darslar": [12, 15, 18]
}
  • "Ha" — mantiqiy qiymat: true, qo'shtirnoqsiz va kichik harf bilan.
  • "Hali kiritilmagan" — qiymat yo'q: null. Bo'sh satr "" ham ishlaydi, lekin null "umuman yo'q" degan ma'noni aniqroq beradi.
  • Dars raqamlari — sonlar massivi.

3-mashq (qiyin): jq bilan savollar

buyurtma.json faylini («Ichma-ich tuzilma» bo'limidagi) yarating. Quyidagi savollarga jq buyrug'i bilan javob oling:

  1. Mijoz qaysi tumanda yashaydi? (qo'shtirnoqsiz chiqsin)
  2. Ikkinchi mahsulotning narxi qancha?
  3. Buyurtma to'langanmi?
  4. Butun buyurtmani bitta qatorga siqib, siqilgan.json fayliga yozing.
Yechim
bash
jq -r '.manzil.tuman' buyurtma.json          # Chilonzor
jq '.mahsulotlar[1].narx' buyurtma.json      # 12000
jq '.tolandi' buyurtma.json                  # true
jq -c . buyurtma.json > siqilgan.json
  • 1: manzil obyekti ichidagi tuman. -r qo'shtirnoqni olib tashlaydi.
  • 2: ikkinchi element — [1], chunki raqamlash 0 dan boshlanadi. [2] yozsangiz, null chiqadi — uchinchi element yo'q.
  • 4: > natijani faylga yozadi (oqimlar darsi). cat siqilgan.json bilan tekshiring — hammasi bitta qatorda.

9. Real ishda

  • API javoblari. API — dasturlar bir-biriga so'rov yuboradigan "eshik". Ob-havo, valyuta kursi, to'lov tizimi — deyarli hammasi javobni JSON'da beradi. Siz yozadigan sayt ham serverdan JSON oladi.
  • Loyiha sozlamalari. package.json — har bir JavaScript loyihasining "pasporti" (npm darsida ko'ramiz). VS Code sozlamalari — settings.json (JSONC).
  • JavaScript. JS'da JSON'ni obyektga aylantirish (JSON.parse) va teskarisi (JSON.stringify) — kundalik ish. Buni JavaScript'dagi JSON darsida o'rganamiz.
  • Loglar. Katta tizimlar loglarni NDJSON'da yozadi — jq bilan qidirish oson.
  • Intervyu. "JSON'da qanday turlar bor?", "JSON va JavaScript obyekti farqi nima?" — boshlang'ich darajadagi tez-tez beriladigan savollar.

Xulosa

  • JSON — dasturlar ma'lumot almashadigan matnli format; uni har qanday til tushunadi.
  • Obyekt {} — kalit–qiymat juftliklari; massiv [] — tartiblangan ro'yxat.
  • 6 ta tur: satr, son, true/false, null, obyekt, massiv. Sana turi yo'q — satr sifatida yoziladi.
  • Qoidalar: faqat ", oxirgi vergul yo'q, izoh yo'q, teskari slesh \\ bilan.
  • jq . — tekshirish va chiroyli qilish, jq empty — faqat tekshirish, jq -c — siqish, .kalit[0] — qiymat olish.
  • JSONC izohga ruxsat beradi, NDJSON har qatorda alohida JSON saqlaydi.

Keyingi dars: CSV va TSV: jadvalli ma'lumot — Excel jadvallarini oddiy matn ko'rinishida saqlaydigan format va uning vergul, qo'shtirnoq hamda kodlash tuzoqlarini o'rganamiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
JSON nima: sintaksis qoidalari, 6 ta tur va tipik xatolar — IlmHamroh