JSON у Python: читання, запис і типові помилки
19.04.2026Що таке JSON і чому він такий популярний
JSON (JavaScript Object Notation) — це легкий текстовий формат для зберігання та передачі структурованих даних. Попри назву, він давно використовується не лише в JavaScript, а й у багатьох мовах програмування, зокрема в Python. Його популярність пояснюється простотою: JSON легко читати людині, а ще простіше — машині.
У Python для роботи з JSON найчастіше використовують стандартний модуль json. Він уже входить до складу мови, тому нічого додатково встановлювати не потрібно.
Основні відповідності між JSON і Python
Щоб працювати з JSON без плутанини, корисно запам’ятати, як типи даних зіставляються між собою.
- JSON object → dict
- JSON array → list
- string → str
- number → int або float
- true / false → True / False
- null → None
Саме ця відповідність робить обмін даними між API, файлами та локальними структурами дуже зручним.
Як читати JSON у Python
Для перетворення JSON-рядка або файлу в Python-об’єкт використовують функцію json.loads() або json.load().
Читання з рядка
Якщо JSON уже є у вигляді тексту, використовуйте loads():
import jsondata = '{"name": "Олена", "age": 28, "city": "Київ"}'user = json.loads(data)print(user["name"])
Після виконання коду змінна user стане словником Python.
Читання з файлу
Якщо дані збережені у файлі .json, зручніше використовувати load():
import jsonwith open("data.json", "r", encoding="utf-8") as file: data = json.load(file)
Тут важливо відкривати файл із кодуванням utf-8, особливо якщо в даних є українські символи.
Як записувати JSON у Python
Для зворотного перетворення Python-об’єкта в JSON використовуйте json.dumps() або json.dump().
Запис у рядок
Функція dumps() повертає JSON у вигляді тексту:
import jsonperson = {"name": "Іван", "age": 34, "skills": ["Python", "SQL"]}json_text = json.dumps(person)print(json_text)
Це зручно, якщо JSON потрібно передати далі, наприклад, в API-запиті або в логах.
Запис у файл
Щоб зберегти дані у файл, використовуйте dump():
import jsonperson = {"name": "Іван", "age": 34, "skills": ["Python", "SQL"]}with open("person.json", "w", encoding="utf-8") as file: json.dump(person, file, ensure_ascii=False, indent=2)
Параметр ensure_ascii=False дозволяє зберігати кирилицю нормально, без екранування. А indent=2 робить файл читабельним для людини.
Як перевірити валідність JSON
Іноді потрібно не лише прочитати JSON, а й переконатися, що він правильний. Якщо формат пошкоджений, Python згенерує помилку. Найпростіший спосіб перевірки — спробувати розпарсити текст через json.loads() у блоці try/except.
import jsontext = '{"name": "Марія", "age": 25}'try: data = json.loads(text) print("JSON валідний")except json.JSONDecodeError as e: print("Помилка JSON:", e)
Такий підхід особливо корисний, якщо дані надходять ззовні: з форми, API або іншого сервісу.
Типові помилки під час роботи з JSON
Найчастіше проблеми виникають не через сам модуль json, а через неочевидні відмінності між JSON і Python або через помилки у форматуванні.
1. Використання одинарних лапок
У JSON рядки мають бути в подвійних лапках. Це поширена помилка, особливо коли текст пишуть вручну.
Неправильно:
{'name': 'Олег'}
Правильно:
{"name": "Олег"}
2. Лишні коми
У JSON не можна залишати кому після останнього елемента в об’єкті чи масиві.
Неправильно:
{"name": "Олег", "age": 30,}
3. Плутанина між True/False і true/false
У Python використовуються True і False, а в JSON — true і false. Якщо ви пишете JSON вручну, ця різниця має значення.
4. Неправильне кодування файлу
Якщо не вказати encoding=”utf-8″, український текст може зіпсуватися, особливо під час запису та читання файлів на різних системах.
5. Спроба серіалізувати несумісний об’єкт
Модуль json не вміє автоматично перетворювати всі типи Python. Наприклад, об’єкти datetime, множини set або власні класи можуть викликати помилку.
Проблемний приклад:
import jsondata = {"tags": {"python", "json"}}json.dumps(data)
Множина set не є JSON-сумісною структурою. У таких випадках її потрібно попередньо перетворити, наприклад у список.
Корисні параметри модуля json
Окрім базових функцій, модуль json має кілька параметрів, які суттєво спрощують роботу.
- indent — додає форматування для зручного читання.
- ensure_ascii — контролює екранування символів.
- sort_keys — сортує ключі у словнику.
- separators — налаштовує розділювачі між елементами.
Наприклад, якщо потрібно створити акуратний файл для перевірки або відладки, indent=2 і sort_keys=True зроблять результат зрозумілішим.
Практичні поради для щоденної роботи
Під час роботи з JSON важливо не намагатися редагувати його як звичайний текст, якщо це не потрібно. Краще завантажити дані у Python-структуру, змінити її, а потім знову зберегти у JSON. Так ви зменшите ризик синтаксичних помилок.
Ще одна корисна звичка — завжди перевіряти структуру вхідних даних. Якщо ви отримуєте JSON з API, не припускайте, що він завжди матиме однаковий вигляд. Деякі поля можуть бути відсутніми, а типи значень — змінюватися.
Також не варто забувати, що JSON — це формат обміну даними, а не повноцінне сховище логіки програми. Для складніших задач інколи краще використовувати базу даних або інші інструменти серіалізації.
Висновок
Робота з JSON у Python проста, якщо добре розуміти базові принципи: loads/load для читання, dumps/dump для запису та try/except для перевірки помилок. Найбільше труднощів зазвичай виникає через синтаксис JSON, різницю між типами даних і кодування файлів. Якщо пам’ятати про ці нюанси, JSON стане дуже зручним інструментом у щоденній Python-розробці.