CodeGym /Kurslar /C# SELF /Əsaslar JSON-format...

Əsaslar JSON-formatı və onun populyarlığı

C# SELF
Səviyyə , Dərs
Mövcuddur

1. Giriş

Əgər siz ən azı bir dəfə müasir API-lərə baxmısınızsa, web-servislərlə işləmisinizsə, mobil tətbiqlər üzərində işləmisinizsə və ya sadəcə nəyisə "universal formatda" saxlamağa çalışmısınızsa — artıq JSON-la qarşılaşmısınız və ya qarşılaşacaqsınız. Bu həmin formatdır ki, fərqli proqramlaşdırma dillərini və platformaları "bağlayır": C#, JavaScript, Python — hamısı JSON ilə danışır.

Niyə məhz JSON serializasiya sahəsində ulduz oldu? Cavab sadədir: kompakt, insan-oxunan və yüngül mətn formatıdır. Onun populyarlığı sadəliyin, universal olmağın və proqramlaşdırma dillərində əla dəstəyin uğurlu kombinasiyasıdır.

JSON nədir?

JSONJavaScript Object Notation-un qısaltmasıdır. Format JavaScript dünyasından yaranıb, amma tezliklə browser-dən bayıra çıxdı. Vacibdir: adın mənşəyinə baxmayaraq, JSON JavaScript-ə bağlı deyil və bütün dillər üçün eyni dərəcədə rahatdır.

Format 2000-ci illərin əvvəlində Douglas Crockford tərəfindən XML-in daha sadə alternativi kimi ixtira olundu. İdeya sadədir: «JSON daha qısa, daha sadə və gözlə oxumaq üçün daha asandır».

2. JSON-formatının əsas qaydaları

Əsas: JSON — strukturlaşdırılmış məlumatlar üçün sərt təyin edilmiş mətn formatıdır. Heç bir sehr yoxdur, sadəcə adi mətn, hər hansı redaktorda açmaq olar.

Əsas konstruksiyalar:

  • Massivlər (arrays): sıralı dəyər siyahıları.
  • Obyektlər (objects): açar-dəyər cütlərindən ibarət kolleksiyalar.
  • Sadə tiplər: stringlər, ədədlər, boolean dəyərlər (true, false) və xüsusi dəyər null.

Minimal JSON-sənəd nümunəsi:

{
    "name": "Ivan",
    "age": 25,
    "isStudent": true,
    "scores": [5, 4, 5, 3],
    "contacts": {
        "email": "ivan@example.com",
        "phone": null
    }
}

Şematik struktur

Burada C# tipləri ilə JSON təmsilatı arasında sadə uyğunluq cədvəlidir:

C# tip JSON nümunəsi
string
"name": "Ivan"
int, double
"score": 5
bool
"isStudent": true
massiv (int[], ...)
"scores": [5,4,5,3]
obyekt (class, ...)
"contacts": { ... }
null
"phone": null

JSON yazı qaydaları

  1. Stringlər həmişə cüt dırnaqda: 'text' — səhvdir, doğru "text".
  2. Obyekt açarları — cüt dırnaq içərisində stringlər: məsələn, "name": ...
  3. Vergüllər yalnız elementlər arasında olmalıdır, son elementdən sonra vergül olmaz.
  4. İndentlər məcburi deyil, amma oxunaqlığı artırır.
  5. Ədədlər dırnaq olmadan: "age": 25, yoxsa "age": "25" yazmaq düzgün deyil.
  6. Boolean dəyərlər — true/false (dırnaq olmadan), True, FALSE və ya "true" düzgün deyil.
  7. null null kimi yazılır (dırnaq olmadan).

3. Programçı gözü ilə JSON

C# tipləri ilə analogiyalar:

  • JSON-obyektDictionary<string, object>
  • JSON-massivT[] və ya List<T>
  • JSON-string ≈ adi string
  • JSON-ədədint və ya double (dəyərdən asılı olaraq)

Obyekti JSON-a serialize etmək nümunəsi

Class:

public class Student
{
    public string Name { get; set; } = "";
    public int Age { get; set; }
    public bool IsStudent { get; set; }
    public int[] Scores { get; set; } = Array.Empty<int>();
}

Nəticədə alınan JSON (sadələşdirilmiş, serialize detalları aşağıda):

{
    "Name": "Ivan",
    "Age": 25,
    "IsStudent": true,
    "Scores": [5, 4, 5, 3]
}

4. Etibarlı JSON-strukturların nümunələri

Massiv və iç-içə obyektlər olan obyekt

{
  "product": "Kofe",
  "price": 125.50,
  "inStock": true,
  "attributes": {
    "weight": 500,
    "unit": "gr"
  },
  "tags": ["napitok", "energiya", "arabika"],
  "promotions": null
}

Obyektlər massivi

[
  {"id": 1, "name": "Petya"},
  {"id": 2, "name": "Masha"},
  {"id": 3, "name": "Vasya"}
]

5. Etibarsız JSON nümunələri (və niyə)

Tək dırnaq:

{ 'name': 'Ivan' } // Səhv!

JSON ikiqat dırnaq tələb edir.

Sonuncu elementdən sonra vergül:

{ "x": 1, "y": 2, } // Səhv!

Axırda artıq vergül icazə verilmir.

Şərhlər:

{
  // Belə şərhlər təəssüf ki, JSON-da işləmir
  "name": "Ivan"
}

JSON-da şərhlər yoxdur.

6. Real layihələrdə JSON-un nə üçün lazım olduğu

Sistemlər arasında məlumat ötürülməsi

JSON — fərqli proqramlar arasında universal "ortaq dil", adətən HTTP üzərində. Məsələn, server C#-də, frontend JavaScript-dədirsə — onların ortaq formatı JSON-dur.

Konfiqurasiyaların və məlumatların saxlanması

Çox tətbiqlər parametrləri .json fayllarında saxlayır. Məsələn, appsettings.json — .NET tətbiqləri üçün standartdır. Üstünlükləri: oxumaq, dəyişmək və versionlamaq asandır.

Server və mobil API-lər

Çox REST API-lər sorğu və cavab formatı kimi JSON-dan istifadə edir: məsələn, istifadəçilər siyahısı obyektlər massivi kimi gəlir.

Alət və kitabxana konfiqurasiyaları

Bir çox .NET alətləri (Serilog, Swagger və s.) konfiqurasiyalar üçün JSON-dan istifadə edir. XML daha az rast gəlinir — JSON daha kompakt və aydın olur.

7. JSON-un populyarlığı: niyə hamı onu sevir?

  • Oxunaqlıq. Hətta proqramçı olmayan da nəyin nə olduğunu anlaya bilər.
  • Şəbəkə üzrə ötürülmə rahatlığı. Adi mətn, aşağı "çəki".
  • Hər dildə dəstək. Serializasiya/deserializasiya demək olar ki, "qutudan çıxarılaraq" mövcuddur.
  • Konfiqurasiyalar üçün əlverişlidir. Hər hansı redaktorlar onunla yaxşı işləyir.
  • Yaratmaq asandır. JSON yaratmaq çox sadədir.
  • Massivlər, iç-içəlik, null. Hər şey intuïtivdir, XML-də olduğu kimi "mötərizə xəstəliyi" yoxdur.

Hansı hallarda JSON seçmək daha yaxşıdır?

  • Mobil və ya web tətbiq yaradırsınızsa;
  • Xarici xidmətlərin API-ləri ilə işləyirsinizsə;
  • Gələcək inteqrasiyalara dost tətbiq yaratmaq istəyirsinizsə.

8. C# JSON ilə necə işləyir

Qısa olaraq məşhur .NET kitabxanalarından:

Minimal serialize/deserializasiya nümunəsi:

using System.Text.Json;

// Obyekti JSON-string-ə çeviririk
var student = new Student { Name = "Ivan", Age = 25, IsStudent = true, Scores = new[] {5, 4, 5, 3} };
string json = JsonSerializer.Serialize(student);

// Əksinə: JSON-string-dən obyekt oxuyuruq
Student? parsed = JsonSerializer.Deserialize<Student>(json);

Console.WriteLine(json);

9. Yeni başlayanların JSON ilə işləyərkən tipik səhvləri

Tez-tez edilən səhv — dırnaq növünü qarışdırmaq və ya vergülü unutmaq. Bəzən şərh əlavə etməyə çalışırlar (C#-da rahatdır!), amma JSON bunu bağışlamır.

Daha bir tez-tez rast gəlinən hal — kolleksiyaları ilkinləşdirməmək: nəticədə "scores": null alırsınız, gözlənilən massiv əvəzinə. Kolleksiyaları əvvəlcədən inicializasiya edin.

Unutmayın, JSON mətn formatıdır: böyük həcmli məlumatlar çox yaddaş tutur. Məsələn, şərti 500 MB JSON serialize etsəniz, tətbiqin performansı ciddi dərəcədə düşə bilər.

1
Sorğu/viktorina
, səviyyə, dərs
Əlçatan deyil
Seryallaşdırma ilə tanışlıq
Məlumatların seryallaşdırılması anlayışı
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION