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

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

C# SELF
43 уровень , 4 лекция
Открыта

1. Введение

Если вы хоть раз открывали современные API, работали с web-сервисами, мобильными приложениями или даже просто пытались сохранить что-то в "универсальном формате" — вы уже сталкивались или столкнётесь с 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, приложение может ощутимо просесть по производительности.

2
Задача
C# SELF, 43 уровень, 4 лекция
Недоступна
Чтение данных из бинарного файла
Чтение данных из бинарного файла
1
Опрос
Знакомство с сериализацией, 43 уровень, 4 лекция
Недоступен
Знакомство с сериализацией
Понятие сериализации данных
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ