CodeGym /Kurslar /JAVA 25 SELF /JSON əsasları: struktur, sintaksis, üstünlüklər

JSON əsasları: struktur, sintaksis, üstünlüklər

JAVA 25 SELF
Səviyyə , Dərs
Mövcuddur

1. JSON nədir (JavaScript Object Notation)?

JSON (tələffüzü “ceyson”) JavaScript Object Notation ifadəsinin qısaltmasıdır. Adında “JavaScript” sözü olsa da, JSON — Java da daxil olmaqla, demək olar ki, bütün proqramlaşdırma dilləri tərəfindən dəstəklənən universal formatdır.

JSON-u 2000-ci illərin əvvəlində Douglas Crockford brauzer və server arasında məlumat mübadiləsinin sadə yolu kimi irəli sürdü. Ondan əvvəl XML üstünlük təşkil edirdi — çox sözçül və teqlərlə yüklənmiş format.

JSON daha kompakt, daha sadə və “gözlə” oxunması asandır. O, müştəri və server arasında, xüsusən də vebdə və mobil tətbiqlərdə məlumat mübadiləsi üçün tez bir zamanda de-fakto standart oldu.

JSON niyə standart oldu?

  • Sintaksisin sadəliyi — əl ilə yazmaq və oxumaq asandır.
  • Kompaktlıq — artıq teqlər və “su” yoxdur.
  • Oxunaqlılıq — hətta texniki olmayan biri də baş verəni anlayır.
  • Parslama asanlığı — dillərin çoxunda daxili və/yaxud üçüncü tərəf kitabxanaları var.
  • Dillərarası uyğunluq — Java, Python, Kotlin və s. — JSON hamısı tərəfindən dəstəklənir.
  • REST API üçün standart — API-lərin böyük əksəriyyəti JSON qaytarır.

XML ilə müqayisə

JSON XML
Oxunaqlılıq Çox yüksək Orta (çoxlu teq)
Ölçü Kompakt Daha həcmli
Parslama Sadə Daha çox səy tələb edir
Genişlənmə Yuvalanmanı dəstəkləyir Yuvalanmanı dəstəkləyir
Sərtlik Daha az formal Sxemləri təsvir etmək olur
Populyarlıq (2020+) Çox yüksək İstifadə olunur, lakin daha az

Demək olar ki, bütün bəndlərdə JSON qalibdir. Bununla belə, XML mürəkkəb sxemlər, sərt tipləndirmə, XSD ilə validasiya, şərhlər və atributlar lazım olan yerlərdə — məsələn, köhnə sistemlərdə və bank PT-sində — hələ də aktualdır.

Praktikada, əgər siz bank və ya kosmik gəmi üçün PT yazmırsınızsa — JSON istifadə edin.

2. JSON-un əsas sintaksisi

Əgər JavaScript obyektləri və ya digər dillərdəki lüğətlərlə işləmisinizsə, sintaksis sizə tanış görünəcək. Java-da birbaşa “lüğət” yoxdur, onun rolunu java.util paketindən kolleksiyalar, ilk növbədə Map<K, V> (çox vaxt — HashMap<K, V>) icra edir.

Əsas elementlər

  • Obyektlər — “açar: dəyər” cütlüklərindən ibarət toplusu, { } ilə əhatələnir.
  • Massivlər — dəyərlərin sıralanmış siyahıları, [ ] ilə əhatələnir.

Obyekt nümunəsi:

{
  "name": "Alice",
  "age": 25
}

Massiv nümunəsi:

[1, 2, 3, 4, 5]

Massivli obyekt nümunəsi:

{
  "students": [
    "Ivan",
    "Maria",
    "John"
  ]
}

Qəbul edilən dəyər tipləri

JSON-da yalnız aşağıdakı məlumat tiplərindən istifadə etmək olar:

Tip Nümunə Təsvir
Sətir
"hello"
Həmişə ikiqat dırnaqlarda
Ədəd
123, 3.14, -7
Tam və kəsr ədədlər
Boolean
true, false
Məntiqi dəyərlər
null
null
“Boş”, dəyərin olmaması
Obyekt
{ ... }
“açar: dəyər” cütlükləri toplusu
Massiv
[ ... ]
Dəyərlər siyahısı

Diqqət: obyektlərdə açarlar həmişə ikiqat dırnaqlarda olan sətirlərdir, məsələn "name". Tək dırnaqlara icazə verilmir.

Düzgün JSON nümunələri

{
  "id": 1,
  "name": "Bob",
  "active": true,
  "scores": [10, 20, 30],
  "profile": {
    "email": "bob@example.com",
    "phone": null
  }
}

Yanlış JSON nümunəsi (xətalar)

{
  name: 'Bob', // Xəta: açarlar və sətirlər — yalnız ikiqat dırnaqlarda olmalıdır!
  age: 25,
}

Məlumat strukturu: obyekt və massivlərin iç-içəliyi

JSON dərin yuvalanmanı dəstəkləyir: obyektlərin içində obyektlər, obyektlərdə massivlər, massivlərdə obyektlər və s. Bu, matryoşka kimidir.

Mürəkkəb JSON sənədi nümunəsi

{
  "university": "Java University",
  "students": [
    {
      "name": "Ivan",
      "age": 20,
      "courses": ["Math", "Java", "English"]
    },
    {
      "name": "Maria",
      "age": 19,
      "courses": ["Biology", "Java", "Art"]
    }
  ],
  "active": true
}

Köklü obyektdə "university" adlı sətir sahəsi, "active" adlı boolean sahəsi və "students" adlı massiv var; bu massivdə tələbə obyektləri yerləşir.

Vizual sxem (blok-sxem)

{
  "açar": dəyər,
  "massiv": [
    { "açar": dəyər },
    { "açar": dəyər }
  ],
  "obyekt": {
    "açar": dəyər
  }
}

4. JSON-un üstünlükləri

JSON niyə bu qədər populyardır?

  1. İnsan və maşın üçün asan oxunur — strukturu anlamaq rahatdır.
  2. Kompaktlıq — minimum artıq simvollar.
  3. Parslama sadəliyi — oxuma/yazma üçün çoxlu kitabxanalar var.
  4. REST API və mobil tətbiqlər üçün standart — hər yerdə istifadə olunur.
  5. Elastiklik — həm sadə siyahıları, həm də ağacvari strukturları təsvir edir.
  6. Konfiqlər, tənzimləmələr, məlumat saxlanması — konfiqurasiya fayllarında tez-tez istifadə olunur.
  7. Bütün dillər tərəfindən dəstək — Java, Python, Go, Rust və s.

5. Təcrübə: JSON fayllarının nümunələrinin izahı

Nümunə 1: İstifadəçi siyahısı

[
  {
    "id": 1,
    "name": "Alice"
  },
  {
    "id": 2,
    "name": "Bob"
  }
]

Bu, hər elementi istifadəçi obyekti olan bir massivdir.

Nümunə 2: Tətbiq konfiqurasiyası

{
  "debug": true,
  "maxConnections": 100,
  "database": {
    "host": "localhost",
    "port": 5432,
    "user": "admin",
    "password": "qwerty"
  }
}

"database" adlı daxili obyektə malik obyekt. Real tətbiq ayarlarına çox oxşardır.

Nümunə 3: JSON-da xətalar

{
  "name": "Alice",
  "age": 25,
} // Xəta: bağlayıcı mötərizədən əvvəl artıq vergül!

Yadda saxlayın: JSON-da son elementdən sonra vergül qoymaq olmaz.

Nümunə 4: Dırnaqsız açarlar

{ name: "Alice", age: 25 } // Xəta: açarlar ikiqat dırnaqlarda olmalıdır!

6. Faydalı incəliklər

Cədvəl: JSON-da nə olar və nə olmaz

Olar Olmaz
"açar": "dəyər"
'açar': 'dəyər'
"açar": 123
"açar": 0123
"açar": null
"açar": undefined
"açar": true
"açar": True
"açar": [1, 2, 3]
"açar": [1, 2, 3,]

JSON və Java obyektlərinin qısa müqayisəsi

Java JSON
int, double, boolean
Ədəd, true/false
String
“sətir”
List<T>, massiv [dəyər1, dəyər2, ...]
Map<String, Object>
{ "açar": dəyər, ... }
null
null
Sahələri olan sinif { "sahə": dəyər, ... }

Nümunə: Java sinfi və onun JSON təsviri

public class Student {
    public String name;
    public int age;
}
{
  "name": "Alice",
  "age": 20
}

7. JSON ilə işləyərkən tipik xətalar

Xəta №1: İkiqat dırnaqlar əvəzinə tək dırnaqlar. JSON açarlar və sətirlər üçün yalnız ikiqat dırnaqları qəbul edir.

{ 'name': 'Alice' } // Xəta!

Xəta №2: Artıq vergül. Son elementdən sonra vergül qoymaq olmaz.

{ "name": "Alice", } // Xəta!

Xəta №3: Dırnaqsız açarlar. Açarlar həmişə ikiqat dırnaqlarda olmalıdır.

{ name: "Alice" } // Xəta!

Xəta №4: Əvvəlində sıfır olan ədədlər. Bu cür ədədlərə icazə verilmir.

{ "age": 025 } // Xəta!

Xəta №5: undefined istifadəsi. JSON-da undefined yoxdur, null istifadə edin.

{ "value": undefined } // Xəta!

Xəta №6: True/False böyük hərflə. JSON-da yalnız truefalse (kiçik hərflə) var.

{ "active": True } // Xəta!
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION