← Вернуться к блогу

Что такое JSON? Полное руководство для начинающих

Узнайте, что такое JSON, его синтаксис, типы данных и области применения. Полное руководство для начинающих по JavaScript Object Notation.

Big JSON Team10 мин чтенияbeginner
B

Big JSON Team

Technical Writer

Expert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.

10 мин чтения

# Что такое JSON? Полное руководство для начинающих

JSON (JavaScript Object Notation) стал де-факто стандартом для обмена данными в вебе. Независимо от того, являетесь ли вы начинающим программистом, аналитиком данных или просто интересуетесь веб-технологиями, понимание JSON необходимо в современном цифровом мире.

Что означает аббревиатура JSON?

JSON расшифровывается как JavaScript Object Notation (нотация объектов JavaScript). Несмотря на название, JSON является языково-независимым форматом данных, который может использоваться практически с любым языком программирования, включая Python, Java, C#, PHP и, конечно же, JavaScript.

История возникновения JSON

JSON был представлен Дугласом Крокфордом в начале 2000-х годов как легковесная альтернатива XML для обмена данными. Его простота и читаемость быстро сделали его предпочтительным выбором для веб-API и файлов конфигурации.

Почему JSON важен в 2026 году

В современной разработке программного обеспечения JSON присутствует повсюду:

  • Веб-API: REST API преимущественно используют JSON для запросов и ответов
  • Файлы конфигурации: Приложения используют файлы .json для настроек и конфигураций
  • NoSQL базы данных: MongoDB и подобные базы данных хранят данные в JSON-подобных форматах
  • Обмен данными: Системы обмениваются данными, передавая JSON между сервисами
  • ИИ и машинное обучение: Конфигурации моделей и наборы данных часто используют JSON

Синтаксис и структура JSON

Основные синтаксические правила

Синтаксис JSON следует следующим фундаментальным правилам:

  • Данные представлены в виде пар имя/значение: "name": "value"
  • Данные разделяются запятыми: ,
  • Фигурные скобки содержат объекты: {}
  • Квадратные скобки содержат массивы: []
  • Строки должны использовать двойные кавычки: "text"
  • Простой пример JSON

    {
    

    "name": "Анна Иванова",

    "age": 28,

    "city": "Москва",

    "isStudent": false

    }

    Этот JSON-объект содержит четыре свойства: имя (строка), возраст (число), город (строка) и статус студента (логическое значение).

    Типы данных JSON

    JSON поддерживает шесть основных типов данных:

    1. Строки (String)

    Текстовые данные заключаются в двойные кавычки:

    {
    

    "firstName": "Иван",

    "lastName": "Петров",

    "email": "ivan@example.com"

    }

    2. Числа (Number)

    JSON поддерживает как целые числа, так и числа с плавающей точкой:

    {
    

    "integer": 42,

    "float": 3.14159,

    "negative": -273,

    "scientific": 1.23e10

    }

    3. Логические значения (Boolean)

    Только два значения: true или false:

    {
    

    "isActive": true,

    "hasAccess": false,

    "verified": true

    }

    4. Null

    Представляет отсутствие значения:

    {
    

    "middleName": null,

    "previousAddress": null

    }

    5. Объекты (Object)

    Коллекция пар ключ-значение, заключенная в фигурные скобки:

    {
    

    "person": {

    "name": "Мария",

    "age": 25,

    "address": {

    "street": "Тверская ул.",

    "city": "Москва",

    "zipCode": "125009"

    }

    }

    }

    6. Массивы (Array)

    Упорядоченная коллекция значений, заключенная в квадратные скобки:

    {
    

    "colors": ["красный", "зеленый", "синий"],

    "numbers": [1, 2, 3, 4, 5],

    "mixed": ["текст", 42, true, null]

    }

    Практические примеры использования JSON

    Пример 1: Профиль пользователя

    {
    

    "userId": "12345",

    "username": "ivan_petrov",

    "profile": {

    "firstName": "Иван",

    "lastName": "Петров",

    "birthDate": "1995-06-15",

    "email": "ivan@example.com",

    "phone": "+7-495-123-45-67"

    },

    "preferences": {

    "language": "ru",

    "timezone": "Europe/Moscow",

    "notifications": true

    },

    "roles": ["user", "moderator"],

    "registeredAt": "2024-01-15T10:30:00Z",

    "isActive": true

    }

    Пример 2: Список продуктов

    {
    

    "products": [

    {

    "id": 1,

    "name": "Ноутбук",

    "category": "Электроника",

    "price": 75000,

    "currency": "RUB",

    "inStock": true,

    "specifications": {

    "brand": "ASUS",

    "model": "ROG Strix",

    "ram": "16GB",

    "storage": "512GB SSD"

    }

    },

    {

    "id": 2,

    "name": "Беспроводная мышь",

    "category": "Аксессуары",

    "price": 2500,

    "currency": "RUB",

    "inStock": true,

    "specifications": {

    "brand": "Logitech",

    "model": "MX Master 3",

    "connectivity": "Bluetooth"

    }

    }

    ],

    "totalCount": 2,

    "lastUpdated": "2026-01-26T14:30:00Z"

    }

    Пример 3: Данные погоды

    {
    

    "location": {

    "city": "Санкт-Петербург",

    "country": "Россия",

    "coordinates": {

    "latitude": 59.9311,

    "longitude": 30.3609

    }

    },

    "current": {

    "temperature": -5,

    "feelsLike": -8,

    "humidity": 85,

    "pressure": 1013,

    "windSpeed": 4.5,

    "description": "облачно с прояснениями"

    },

    "forecast": [

    {

    "date": "2026-01-27",

    "tempMin": -7,

    "tempMax": -3,

    "precipitation": 20

    },

    {

    "date": "2026-01-28",

    "tempMin": -6,

    "tempMax": -2,

    "precipitation": 10

    }

    ]

    }

    JSON в различных языках программирования

    JavaScript

    // Преобразование объекта в JSON
    

    const user = { name: "Иван", age: 30 };

    const jsonString = JSON.stringify(user);

    console.log(jsonString); // {"name":"Иван","age":30}

    // Парсинг JSON в объект

    const parsed = JSON.parse(jsonString);

    console.log(parsed.name); // Иван

    Python

    import json
    
    

    # Преобразование словаря в JSON

    user = {"name": "Иван", "age": 30}

    json_string = json.dumps(user, ensure_ascii=False)

    print(json_string) # {"name": "Иван", "age": 30}

    # Парсинг JSON в словарь

    parsed = json.loads(json_string)

    print(parsed["name"]) # Иван

    Java

    import com.google.gson.Gson;
    
    

    public class Example {

    public static void main(String[] args) {

    Gson gson = new Gson();

    // Преобразование объекта в JSON

    User user = new User("Иван", 30);

    String json = gson.toJson(user);

    System.out.println(json);

    // Парсинг JSON в объект

    User parsed = gson.fromJson(json, User.class);

    System.out.println(parsed.getName());

    }

    }

    C#

    using System.Text.Json;
    
    

    var user = new { Name = "Иван", Age = 30 };

    // Сериализация в JSON

    string jsonString = JsonSerializer.Serialize(user);

    Console.WriteLine(jsonString);

    // Десериализация из JSON

    var parsed = JsonSerializer.Deserialize<User>(jsonString);

    Console.WriteLine(parsed.Name);

    Преимущества JSON

    1. Читаемость

    JSON легко читать и писать человеку благодаря его простому синтаксису.

    2. Компактность

    По сравнению с XML, JSON более компактен и требует меньше байт для передачи тех же данных.

    3. Языковая независимость

    Практически все современные языки программирования имеют встроенную или библиотечную поддержку JSON.

    4. Простота парсинга

    JSON легко парсится и генерируется, что делает его эффективным для обмена данными.

    5. Широкая поддержка

    JSON поддерживается всеми современными браузерами, серверами и базами данных.

    Ограничения JSON

    1. Нет комментариев

    JSON не поддерживает комментарии в стандартной спецификации (хотя некоторые парсеры допускают расширения).

    2. Ограниченные типы данных

    JSON не поддерживает даты, функции или другие сложные типы напрямую.

    3. Отсутствие схемы

    JSON не имеет встроенного механизма валидации схемы (хотя существует JSON Schema).

    4. Дублирование ключей

    В больших структурах имена ключей могут повторяться, увеличивая размер файла.

    Лучшие практики работы с JSON

    1. Используйте понятные имена ключей

    // Хорошо
    

    {

    "firstName": "Иван",

    "lastName": "Петров"

    }

    // Плохо

    {

    "fn": "Иван",

    "ln": "Петров"

    }

    2. Соблюдайте согласованность

    Используйте единый стиль именования (camelCase, snake_case) во всем JSON.

    {
    

    "firstName": "Иван",

    "lastName": "Петров",

    "emailAddress": "ivan@example.com"

    }

    3. Избегайте глубокой вложенности

    Чрезмерная вложенность делает JSON трудным для чтения и обработки:

    // Избегайте этого
    

    {

    "level1": {

    "level2": {

    "level3": {

    "level4": {

    "data": "значение"

    }

    }

    }

    }

    }

    4. Используйте массивы для списков

    {
    

    "users": [

    {"name": "Иван", "age": 30},

    {"name": "Мария", "age": 25},

    {"name": "Петр", "age": 35}

    ]

    }

    5. Валидируйте JSON

    Всегда проверяйте JSON на корректность перед использованием. Используйте валидаторы и линтеры.

    JSON Schema

    JSON Schema - это стандарт для описания структуры JSON-документов:

    {
    

    "$schema": "http://json-schema.org/draft-07/schema#",

    "type": "object",

    "properties": {

    "name": {

    "type": "string",

    "minLength": 1,

    "maxLength": 100

    },

    "age": {

    "type": "integer",

    "minimum": 0,

    "maximum": 150

    },

    "email": {

    "type": "string",

    "format": "email"

    }

    },

    "required": ["name", "email"]

    }

    Инструменты для работы с JSON

    Онлайн-инструменты

  • JSON.org - официальная документация
  • JSONLint - валидатор JSON
  • JSON Formatter - форматирование и минификация
  • JSONPath - навигация по JSON-структурам
  • Редакторы кода

    • VS Code - отличная поддержка JSON с подсветкой синтаксиса
    • Sublime Text - быстрая работа с большими JSON-файлами
    • IntelliJ IDEA - продвинутая валидация и автодополнение

    Библиотеки

    • JavaScript: встроенный JSON.parse() и JSON.stringify()
    • Python: модуль json
    • Java: Gson, Jackson
    • C#: System.Text.Json, Newtonsoft.Json

    Безопасность при работе с JSON

    1. Избегайте eval()

    Никогда не используйте eval() для парсинга JSON:

    // ОПАСНО - не делайте так!
    

    const data = eval("(" + jsonString + ")");

    // БЕЗОПАСНО

    const data = JSON.parse(jsonString);

    2. Валидация входных данных

    Всегда проверяйте и валидируйте JSON, полученный из внешних источников:

    try {
    

    const data = JSON.parse(userInput);

    // Валидация структуры

    if (typeof data.name !== 'string') {

    throw new Error('Некорректное имя');

    }

    } catch (error) {

    console.error('Ошибка парсинга JSON:', error);

    }

    3. Санитизация данных

    Очищайте данные перед их использованием в приложении:

    const sanitizedData = {
    

    name: String(data.name).trim(),

    age: parseInt(data.age, 10)

    };

    JSON vs другие форматы данных

    JSON vs XML

    Преимущества JSON:
    • Более компактный
    • Легче читать
    • Быстрее парсится
    • Нативная поддержка в JavaScript

    Преимущества XML:
    • Поддержка атрибутов
    • Встроенная валидация схемы (XSD)
    • Поддержка пространств имен
    • Лучше для документо-ориентированных данных

    JSON vs YAML

    Преимущества JSON:
    • Более строгий синтаксис
    • Лучшая производительность парсинга
    • Широкая поддержка

    Преимущества YAML:
    • Более читаемый для человека
    • Поддержка комментариев
    • Меньше служебных символов

    Будущее JSON

    JSON продолжает эволюционировать:

    • JSON-LD: JSON для связанных данных (Linked Data)
    • JSONP: JSON с поддержкой callback (устаревает)
    • JSON5: расширенный JSON с комментариями и дополнительными возможностями
    • BSON: бинарный JSON для эффективного хранения

    Заключение

    JSON стал незаменимым инструментом в современной разработке. Его простота, эффективность и универсальность делают его идеальным выбором для обмена данными между системами, конфигурации приложений и хранения структурированной информации.

    Понимание JSON - это базовый навык для любого разработчика, работающего с веб-технологиями, API или современными приложениями. Независимо от того, начинаете ли вы свой путь в программировании или уже опытный специалист, глубокое знание JSON поможет вам создавать более эффективные и масштабируемые решения.

    Начните с простых примеров, практикуйтесь с реальными API, и вскоре работа с JSON станет для вас естественной и интуитивной.

    Часто задаваемые вопросы

    Q: Можно ли использовать одинарные кавычки в JSON?

    A: Нет, JSON требует использования только двойных кавычек для строк.

    Q: Поддерживает ли JSON комментарии?

    A: Стандартный JSON не поддерживает комментарии, хотя некоторые парсеры допускают их как расширение.

    Q: В чем разница между JSON и JavaScript-объектом?

    A: JSON - это текстовый формат данных, а JavaScript-объект - это структура данных в памяти. JSON является подмножеством JavaScript-нотации объектов.

    Q: Как обработать большие JSON-файлы?

    A: Используйте потоковые парсеры или разбивайте файл на части. В Node.js можно использовать библиотеки вроде JSONStream.

    Q: Безопасно ли хранить пароли в JSON?

    A: Никогда не храните пароли в открытом виде в JSON. Всегда используйте хеширование и шифрование для конфиденциальных данных.

    Share:

    Похожие статьи

    Read in English