Модуль json: сериализация и десериализация
less_30__JSON__datetime/theory_01__JSON.md
Вводит JSON как текстовый формат, близкий к словарям Python, и разбирает встроенный модуль json: loads/load для разбора JSON в Python-объекты и dumps/dump для обратного превращения. Отдельно разобраны параметры dumps — indent, sort_keys, ensure_ascii — и способ сериализовать объекты, не поддерживаемые «из коробки» (например, datetime), через параметр default=str. Последняя часть — обработка некорректного JSON через json.JSONDecodeError.
- Соответствие JSON ↔ Python: объект↔dict, массив↔list, null↔None
- json.loads()/json.load() — десериализация из строки и файла
- json.dumps()/json.dump() — сериализация в строку и файл
- Параметры indent, sort_keys, ensure_ascii=False (кириллица без \uXXXX)
- default=str — сериализация datetime и других «неродных» объектов
- json.JSONDecodeError при некорректном JSON, обёрнутый в try/except
Показать начало файла (240 строк всего)
## 1. Что такое JSON
**JSON (JavaScript Object Notation)** — это текстовый формат для хранения и обмена данными.
Он похож на словари Python:
* Объекты JSON ↔ словари Python (`dict`)
* Массивы JSON ↔ списки Python (`list`)
* Строки, числа, булевы значения и `null` ↔ строки, числа, `True/False`, `None` в Python
**Пример JSON:**
```json
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Physics"],
"is_active": true
}
```
---
## 2. Модуль `json` в Python
Python имеет встроенный модуль `json`, который позволяет:
1. **Парсить JSON в Python объекты (Десериализация)** (`json.loads`, `json.load`)
2. **Конвертировать Python объекты в JSON (Сериализация)** (`json.dumps`, `json.dump`)
---
## 3. Основные функции модуля
### 3.1 Десериализация: преобразование JSON в Python (`load` и `loads`)
* `json.loads()` — преобразует JSON-строку в Python-объект
* `json.load()` — считывает JSON из файла и преобразует в Python-объект
```python
import json
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
data = json.loads(json_string) # str -> dict
print(data)
print(data['name'])
```
Для чтения из файла:
```python
with open("data.json", "r") as f:
data = json.load(f)
```
---
### 3.2 Сериализация: преобразование Python в JSON (`dump` и `dumps`)
* `json.dumps()` — конвертирует Python-объект в JSON-строку
…