Разбор JSON Python: сериализация и десериализация
Узнайте, как читать, записывать и анализировать данные JSON в Python. Освойте json.loads, json.dumps и настройте кодеры/декодеры JSON.
Обзор
JSON (нотация объектов JavaScript) — это облегченный формат обмена данными, который доминирует в современных веб-API, конфигурациях и полезных нагрузках баз данных. Поскольку структуры JSON напоминают словари и списки Python, перевод между ними невероятно прост. Python оснащен встроенным модулем json, который позволяет легко анализировать строки JSON в объекты Python и преобразовывать объекты Python обратно в строки JSON.
Процесс перевода объекта Python (например, словаря) в необработанную строку JSON называется сериализацией или кодированием. Это обрабатывается с помощью json.dumps() (для строк) и json.dump() (для записи непосредственно в файл). Вы можете управлять параметрами форматирования, такими как «отступ», чтобы упорядочить JSON, или «sort_keys», чтобы атрибуты располагались в алфавитном порядке. И наоборот, анализ строки JSON в словаре Python называется десериализацией и выполняется с помощью json.loads() и json.load().
В то время как стандартные типы Python, такие как строки, числа, списки и словари, сериализуются в JSON автоматически, пользовательские объекты (например, классы или объекты даты и времени) этого не делают. Попытка напрямую закодировать пользовательский объект вызовет ошибку TypeError. Чтобы преодолеть эту проблему, разработчики должны создать собственный класс кодировщика, который наследуется от json.JSONEncoder, и переопределить метод .default() для сериализации классов в читаемые словари. Освоение манипуляций с JSON является ключом к общению с внешними веб-сервисами.
Код и вывод выполнения
Преобразование словаря в строку JSON и его обратный анализ с помощью встроенной библиотеки json.
import json
# Python Dictionary representing a user profile
user_profile = {
"name": "Alex",
"is_premium": True,
"skills": ["Python", "Docker"],
"age": 28
}
# Serialize dictionary to JSON string
json_string = json.dumps(user_profile, indent=2)
print("--- JSON String ---")
print(json_string)
# Deserialize JSON string back to dictionary
parsed_dict = json.loads(json_string)
print("\n--- Parsed Python Dictionary ---")
print(f"Name: {parsed_dict['name']}")
print(f"First Skill: {parsed_dict['skills'][0]}")--- JSON String ---
{
"name": "Alex",
"is_premium": true,
"skills": [
"Python",
"Docker"
],
"age": 28
}
--- Parsed Python Dictionary ---
Name: Alex
First Skill: PythonПошаговая реализация
- Отправка полезных данных и чтение данных из REST API
- Сохранение настроек конфигурации внутри файлов settings.json.
- Передача структурированных полезных данных между микросервисами
Часто задаваемые вопросы
В чем разница между json.dump и json.dumps?
json.dump (без «s») записывает данные JSON непосредственно в файловый поток. json.dumps (с символом «s») сериализует данные в строковую переменную Python.
Как вы обрабатываете ошибки декодирования JSON?
Оберните свой код синтаксического анализа в блок try/Exception, перехватывающий json.JSONDecodeError, чтобы корректно обрабатывать некорректные строки JSON.
Связанные темы
Мастер-словари Python. Научитесь хранить, извлекать и обрабатывать данные пары ключ-значение. Понимание производительности и лучших практик сопоставлений.
Ввод-вывод файлов PythonУзнайте, как читать и записывать файлы на Python. Освойте open(), read(), write() и менеджеры контекста для безопасной обработки файловых операций без утечек ресурсов.
Python CSVУзнайте, как обрабатывать данные CSV в Python. Освойте csv.reader, csv.writer и DictReader/DictWriter для эффективного анализа таблиц.
Рекомендуемые ресурсы Python
Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.
Как читать и анализировать файл JSON в Python
Узнайте, как читать, анализировать и загружать файлы JSON в Python с помощью встроенного модуля json. Освойте преобразование строк JSON в словари и наоборот.
Шпаргалка по строковым методам Python
Полное справочное руководство по манипулированию строками в Python. Мастер форматирования, поиска, разделения, замены и проверки свойств строк.
Python против JavaScript: какой язык программирования лучше?
Всестороннее сравнение Python и JavaScript. Изучите синтаксические различия, производительность, варианты использования (серверная и клиентская части) и примеры кодирования.