JavaRush /Курсы /JAVA 25 SELF /Основы JSON: структура, синтаксис, преимущества

Основы JSON: структура, синтаксис, преимущества

JAVA 25 SELF
46 уровень , 0 лекция
Открыта

1. Что такое JSON (JavaScript Object Notation)?

JSON (читается как «джейсон», а не «жэсон»!) расшифровывается как JavaScript Object Notation. Несмотря на слово «JavaScript» в названии, JSON — это универсальный формат, поддерживаемый практически всеми языками программирования, включая Java.

JSON придумал Дуглас Крокфорд в начале 2000-х как простой способ обмена данными между браузером и сервером. До него преобладал XML — многословный и перегруженный тегами.

JSON оказался компактнее, проще и легко читаем «глазами». Он быстро стал стандартом де-факто для обмена данными между клиентом и сервером, особенно в вебе и мобильных приложениях.

Почему JSON стал стандартом?

  • Простота синтаксиса — легко писать и читать вручную.
  • Компактность — нет лишних тегов и «воды».
  • Читаемость — даже гуманитарий поймёт, что происходит.
  • Лёгкость парсинга — у большинства языков есть встроенные/сторонние библиотеки.
  • Межъязыковость — Java, Python, Kotlin и др. — JSON поддерживают все.
  • Стандарт для REST API — подавляющее большинство API возвращают JSON.

Сравнение с XML

JSON XML
Читаемость Очень высокая Средняя (много тегов)
Размер Компактный Более громоздкий
Парсинг Простой Требует больше усилий
Расширяемость Поддерживает вложенность Поддерживает вложенность
Строгость Менее формальный Можно описывать схемы
Популярность (2020+) Очень высокая Используется, но реже

Победа JSON почти по всем пунктам. Тем не менее XML остаётся актуальным там, где нужны сложные схемы, строгая типизация, валидация по XSD, поддержка комментариев и атрибутов — например, в старых системах и банковском ПО.

На практике, если вы не пишете ПО для банка или космического корабля, — используйте JSON.

2. Базовый синтаксис JSON

Если вы работали с объектами JavaScript или словарями в других языках, синтаксис покажется знакомым. В Java прямого «словаря» нет, его роль исполняют коллекции из java.util, в первую очередь Map<K, V> (чаще всего — HashMap<K, V>).

Основные элементы

  • Объекты — набор пар «ключ: значение», обёрнутых в { }.
  • Массивы — упорядоченные списки значений, обёрнутые в [ ].

Пример объекта:

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

Пример массива:

[1, 2, 3, 4, 5]

Пример объекта с массивом:

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

Допустимые типы значений

В JSON можно использовать только следующие типы данных:

Тип Пример Описание
Строка
"hello"
Всегда в двойных кавычках
Число
123, 3.14, -7
Целые и дробные
Булево
true, false
Логические значения
null
null
«Пусто», отсутствие значения
Объект
{ ... }
Набор пар «ключ: значение»
Массив
[ ... ]
Список значений

Внимание: ключи в объектах — это всегда строки в двойных кавычках, например "name". Одинарные кавычки не допускаются.

Примеры валидного JSON

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

Пример невалидного JSON (ошибки)

{
  name: 'Bob', // Ошибка: ключи и строки — только в двойных кавычках!
  age: 25,
}

3. Структура данных: вложенность объектов и массивов

JSON поддерживает глубокую вложенность: объекты в объектах, массивы в объектах, объекты в массивах и т. д. Это как матрёшка.

Пример сложного JSON-документа

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

В корневом объекте есть строковое поле "university", булево поле "active" и массив "students", в котором лежат объекты студентов.

Визуальная схема (блок-схема)

{
  "ключ": значение,
  "массив": [
    { "ключ": значение },
    { "ключ": значение }
  ],
  "объект": {
    "ключ": значение
  }
}

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

Почему JSON так популярен?

  1. Легко читается человеком и машиной — структуру легко понять.
  2. Компактность — минимум лишних символов.
  3. Простота парсинга — множество библиотек для чтения/записи.
  4. Стандарт для REST API и мобильных приложений — повсеместно используется.
  5. Гибкость — описывает как простые списки, так и древовидные структуры.
  6. Конфиги, настройки, хранение данных — часто используется в конфигурациях.
  7. Поддержка всеми языками — Java, Python, Go, Rust и др.

5. Практика: разбор примеров JSON-файлов

Пример 1: Список пользователей

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

Это массив, где каждый элемент — объект пользователя.

Пример 2: Конфигурация приложения

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

Объект с вложенным объектом "database". Очень похоже на реальные настройки приложений.

Пример 3: Ошибки в JSON

{
  "name": "Alice",
  "age": 25,
} // Ошибка: лишняя запятая перед закрывающей скобкой!

Запомните: в JSON нельзя ставить запятую после последнего элемента.

Пример 4: Ключи без кавычек

{ name: "Alice", age: 25 } // Ошибка: ключи должны быть в двойных кавычках!

6. Полезные нюансы

Таблица: что можно и что нельзя в JSON

Можно Нельзя
"ключ": "значение"
'ключ': 'значение'
"ключ": 123
"ключ": 0123
"ключ": null
"ключ": undefined
"ключ": true
"ключ": True
"ключ": [1, 2, 3]
"ключ": [1, 2, 3,]

Краткое сравнение JSON и Java-объектов

Java JSON
int, double, boolean
Число, true/false
String
"строка"
List<T>, массив [значение1, значение2, ...]
Map<String, Object>
{ "ключ": значение, ... }
null
null
Класс с полями { "поле": значение, ... }

Пример: Java-класс и его JSON-представление

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

7. Типичные ошибки при работе с JSON

Ошибка №1: Одинарные кавычки вместо двойных. JSON принимает только двойные кавычки для ключей и строк.

{ 'name': 'Alice' } // Ошибка!

Ошибка №2: Лишняя запятая. Нельзя ставить запятую после последнего элемента.

{ "name": "Alice", } // Ошибка!

Ошибка №3: Ключи без кавычек. Ключи всегда должны быть в двойных кавычках.

{ name: "Alice" } // Ошибка!

Ошибка №4: Числа с ведущими нулями. Такие числа недопустимы.

{ "age": 025 } // Ошибка!

Ошибка №5: Использование undefined. В JSON нет undefined, используйте null.

{ "value": undefined } // Ошибка!

Ошибка №6: True/False с большой буквы. В JSON только true и false (строчными).

{ "active": True } // Ошибка!
1
Задача
JAVA 25 SELF, 46 уровень, 0 лекция
Недоступна
Волшебные данные героя 🧙‍♂️
Волшебные данные героя 🧙‍♂️
1
Задача
JAVA 25 SELF, 46 уровень, 0 лекция
Недоступна
Создание карточки для цифровой библиотеки 📚
Создание карточки для цифровой библиотеки 📚
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Andrey Уровень 1
12 октября 2025
46
I'll kick them all Уровень 5
11 октября 2025

Это как матрёшка, только без балалайки. 
А кокошник имеется?
I'll kick them all Уровень 5
11 октября 2025
46