JavaRush /Курси /C# SELF /Основи JSON-формату...

Основи JSON-формату та його популярність

C# SELF
Рівень 43 , Лекція 4
Відкрита

1. Вступ

Якщо ви хоч раз відкривали сучасні API, працювали з веб‑сервісами, мобільними застосунками або навіть просто намагалися зберегти щось у «універсальному форматі», ви вже стикалися або точно стикнетеся з JSON. Це формат, що буквально «зʼєднує» різні мови програмування й навіть різні платформи: C#, JavaScript, Python — усі «говорять» за допомогою JSON.

Чому саме JSON став зіркою серіалізації? Відповідь проста: це компактний, людиночитний і легкий текстовий формат обміну структурованими даними. Його популярність — результат вдалого поєднання простоти, універсальності та широкої підтримки в мовах програмування.

Що таке JSON?

JSON — це скорочення від JavaScript Object Notation. Формат народився у світі JavaScript, але дуже швидко вийшов за межі браузерів. Важливо: попри походження назви, JSON не привʼязаний до JavaScript і однаково зручний для всіх мов програмування.

Формат зʼявився на початку 2000‑х завдяки Дугласу Крокфорду як простіша альтернатива багатослівному XML. Ідея проста: «JSON коротший, простіший і його легше читати очима».

2. Основні правила JSON‑формату

Головне: JSON — чітко визначений текстовий формат для структурованих даних. Жодної магії — лише звичайний текст, який можна відкрити в будь‑якому редакторі.

Базові конструкції:

  • Масиви (arrays): впорядковані списки значень.
  • Обʼєкти (objects): набори пар ключ‑значення.
  • Прості типи: рядки, числа, булеві значення (true, false) і спеціальне значення null.

Приклад мінімального JSON‑документа:

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

Схематична структура

Ось проста таблиця відповідностей типів C# і подання в JSON:

Тип C# Приклад JSON
string
"name": "Іван"
int, double
"score": 5
bool
"isStudent": true
масив (int[], ...)
"scores": [5,4,5,3]
обʼєкт (class, ...)
"contacts": { ... }
null
"phone": null

Правила запису JSON

  1. Рядки завжди у подвійних лапках: 'text' — помилка, правильно "text".
  2. Ключі обʼєктів — рядки у подвійних лапках: наприклад, "name": ...
  3. Коми ставимо лише між елементами, без завершальної коми після останнього елемента.
  4. Відступи необовʼязкові, але полегшують читання.
  5. Числа без лапок: "age": 25, а не "age": "25".
  6. Булеві значення — true/false (без лапок), не True, FALSE або "true".
  7. null пишеться як null (без лапок).

3. JSON очима програміста

Аналогії з типами C#:

  • JSON‑обʼєктDictionary<string, object>
  • JSON‑масивT[] або List<T>
  • JSON‑рядок ≈ звичайний рядок
  • JSON‑числоint або double (залежно від значення)

Приклад серіалізації обʼєкта в JSON

Клас:

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>();
}

Отриманий JSON (спростимо, деталі серіалізації далі):

{
    "Name": "Іван",
    "Age": 25,
    "IsStudent": true,
    "Scores": [5, 4, 5, 3]
}

4. Приклади допустимих JSON‑структур

Обʼєкт із масивом і вкладеними обʼєктами

{
  "product": "Кава",
  "price": 125.50,
  "inStock": true,
  "attributes": {
    "weight": 500,
    "unit": "г"
  },
  "tags": ["напій", "енергія", "арабіка"],
  "promotions": null
}

Масив обʼєктів

[
  {"id": 1, "name": "Петро"},
  {"id": 2, "name": "Марія"},
  {"id": 3, "name": "Василь"}
]

5. Приклади недопустимого JSON (і чому)

Одинарні лапки:

{ 'name': 'Іван' } // Помилка!

У JSON дозволені лише подвійні лапки.

Кома після останнього елемента:

{ "x": 1, "y": 2, } // Помилка!

Зайва кома наприкінці недопустима.

Коментарі:

{
  // На жаль, так у JSON не працює
  "name": "Іван"
}

У JSON коментарі не підтримуються.

6. Навіщо потрібен JSON у реальних проєктах?

Передача даних між системами

JSON — універсальна «спільна мова» між різними програмами, найчастіше поверх HTTP. Наприклад, сервер на C# спілкується з фронтендом на JavaScript — їхній спільний формат — JSON.

Зберігання налаштувань і даних

Багато застосунків зберігають налаштування в .json‑файлах. Наприклад, appsettings.json — стандарт для .NET‑застосунків. Переваги: легко прочитати, змінити й відстежувати зміни.

Серверні та мобільні API

Більшість REST API використовують JSON як формат запиту й відповіді: наприклад, список користувачів приходить як масив обʼєктів.

Конфігурація інструментів і бібліотек

Багато інструментів у .NET (Serilog, Swagger та ін.) використовують JSON для конфігурацій. XML трапляється дедалі рідше — JSON компактніший і зрозуміліший.

7. Популярність JSON: чому всі його так люблять?

  • Читабельність. Навіть людина без досвіду програмування розбереться, що до чого.
  • Зручно передавати мережею. Звичайний текст, мало «ваги».
  • Підтримка в усіх мовах. Серіалізація та десеріалізація доступні відразу.
  • Зручний для конфігурацій. Будь‑які редактори чудово з ним працюють.
  • Легкість генерації. Генерувати JSON легко.
  • Масиви, вкладеність, null. Усе інтуїтивно, без «дужкової лихоманки», як у XML.

Коли краще обрати JSON?

  • Робите мобільний або веб‑застосунок;
  • Працюєте з API зовнішніх сервісів;
  • Хочете зробити застосунок дружнім до майбутніх інтеграцій.

8. Як C# працює з JSON

Коротко про популярні бібліотеки .NET:

Мінімальний приклад серіалізації/десеріалізації:

using System.Text.Json;

// Перетворюємо обʼєкт на JSON-рядок
var student = new Student { Name = "Іван", Age = 25, IsStudent = true, Scores = new[] {5, 4, 5, 3} };
string json = JsonSerializer.Serialize(student);

// І навпаки: читаємо обʼєкт із JSON-рядка
Student? parsed = JsonSerializer.Deserialize<Student>(json);

Console.WriteLine(json);

9. Типові помилки новачків під час роботи з JSON

Поширена помилка — переплутати лапки або забути кому. Інколи намагаються додати коментарі (як у C# — це ж зручно!), але JSON цього не дозволяє.

Ще одна часта ситуація — серіалізація обʼєктів із неініціалізованими колекціями: у результаті ви отримуєте "scores": null замість очікуваного масиву. Ініціалізуйте колекції заздалегідь.

Памʼятайте, що JSON — це текст: великі обсяги даних займають багато памʼяті. Якщо серіалізувати умовні 500 МБ у JSON, застосунок може суттєво втратити в продуктивності.

1
Опитування
Znaĭomstvo z serializatsiieiu, рівень 43, лекція 4
Недоступний
Znaĭomstvo z serializatsiieiu
Poniattia serializatsii danykh
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ