Как парсить JSON в Python

онлайн тренажер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Как парсить JSON в Python: Полное руководство для начинающих и опытных разработчиков

Работа с форматами данных — важная часть любой современной программы. JSON (JavaScript Object Notation) стал стандартом для обмена данными между приложениями, веб-сервисами и клиентами. Благодаря своей читаемости и простоте, JSON широко используется в API, конфигурационных файлах и базах данных.

Python предлагает мощный встроенный модуль json, который позволяет легко парсить (разбирать) JSON-данные, а также сериализовать объекты Python обратно в JSON.

В этой статье вы узнаете:

  • Что такое JSON и зачем его парсить.

  • Как работать с модулем json в Python.

  • Как загружать и сохранять JSON из файлов.

  • Как обрабатывать ошибки при работе с JSON.

  • Чем отличается модуль ujson и когда его стоит использовать.


Что такое JSON?

JSON — это текстовый формат обмена данными, основанный на синтаксисе объектов JavaScript. Он используется для хранения структурированных данных в виде ключ-значение.

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

json
{ "name": "Alice", "age": 30, "is_active": true, "hobbies": ["reading", "cycling", "traveling"] }

Импорт модуля для работы с JSON в Python

Встроенный модуль json позволяет преобразовывать JSON-строки в объекты Python и обратно.

python
import json

Как парсить JSON-строку в объект Python

Для этого используется функция json.loads() (от "load string").

python
import json json_data = '{"name": "Bob", "age": 25, "is_active": false}' parsed_data = json.loads(json_data) print(parsed_data) # {'name': 'Bob', 'age': 25, 'is_active': False} print(type(parsed_data)) # <class 'dict'>

Теперь мы можем работать с данными как с обычным словарём:

python
print(parsed_data['name']) # Bob

Как преобразовать объект Python в JSON-строку

Используем функцию json.dumps():

python
data = {'name': 'Alice', 'age': 30, 'is_active': True} json_string = json.dumps(data) print(json_string) # {"name": "Alice", "age": 30, "is_active": true}

📌 Параметры функции dumps:

  • indent: Форматирует вывод с отступами (для удобства чтения).

  • sort_keys: Сортирует ключи в алфавитном порядке.

python
json_pretty = json.dumps(data, indent=4, sort_keys=True) print(json_pretty)

Как работать с JSON-файлами

📥 Чтение JSON из файла

python
with open('data.json', 'r') as file: content = json.load(file) print(content)

📤 Запись JSON в файл

python
data = {'city': 'Moscow', 'temperature': -5} with open('weather.json', 'w') as file: json.dump(data, file, indent=4)

Работа с вложенными JSON-объектами

📚 Пример вложенного JSON:

json
{ "user": { "name": "Charlie", "contacts": { "email": "charlie@example.com", "phone": "123456789" } } }

Парсим и получаем доступ к вложенным данным:

python
import json json_data = ''' { "user": { "name": "Charlie", "contacts": { "email": "charlie@example.com", "phone": "123456789" } } } ''' parsed = json.loads(json_data) email = parsed['user']['contacts']['email'] print(email) # charlie@example.com

Как обрабатывать ошибки при работе с JSON

Иногда данные могут быть некорректными. Для обработки ошибок используйте блок try-except.

python
try: invalid_json = '{"name": "Alice", "age": 30,' # Пропущена закрывающая скобка data = json.loads(invalid_json) except json.JSONDecodeError as e: print(f"Ошибка декодирования JSON: {e}")

Что делать, если нужно парсить большие JSON-файлы?

При работе с большими файлами (например, несколько ГБ) не стоит загружать всё содержимое в память. Используйте построчное чтение или специальные библиотеки, такие как ijson.

bash
pip install ijson

Чем отличается ujson от стандартного модуля json?

ujson (Ultra JSON) — это более быстрая реализация парсера JSON на C. Она полезна, если важна производительность.

📚 Пример использования:

python
import ujson data = {'name': 'FastParser', 'version': 1} json_string = ujson.dumps(data) print(json_string)

Сравнение модулей json и ujson

Характеристика json (стандартный) ujson (быстрый)
Скорость Средняя Высокая
Поддержка типов Полная Ограниченная
Встроенный модуль Да Нет (устанавливается отдельно)

Практический пример: Загрузка JSON из API

python
import requests import json response = requests.get('https://api.agify.io/?name=michael') if response.status_code == 200: data = response.json() print(f"Имя: {data['name']}, Предполагаемый возраст: {data['age']}")

Заключение

Парсинг JSON в Python — это базовый навык, который должен освоить каждый разработчик. Стандартная библиотека json предоставляет удобные инструменты для преобразования данных, работы с файлами и API.

Если вы работаете с большими объёмами данных или требуются высокие скорости обработки — рассмотрите использование альтернативных библиотек, таких как ujson или ijson.

Освоив работу с JSON, вы сможете легко интегрировать ваш Python-код с различными веб-сервисами, базами данных и конфигурационными системами.

Новости