JSON у Python: читання, запис і типові помилки

19.04.2026 0 By AdminA

Що таке JSON і чому він такий популярний

JSON (JavaScript Object Notation) — це легкий текстовий формат для зберігання та передачі структурованих даних. Попри назву, він давно використовується не лише в JavaScript, а й у багатьох мовах програмування, зокрема в Python. Його популярність пояснюється простотою: JSON легко читати людині, а ще простіше — машині.

У Python для роботи з JSON найчастіше використовують стандартний модуль json. Він уже входить до складу мови, тому нічого додатково встановлювати не потрібно.

Основні відповідності між JSON і Python

Щоб працювати з JSON без плутанини, корисно запам’ятати, як типи даних зіставляються між собою.

  • JSON objectdict
  • JSON arraylist
  • stringstr
  • numberint або float
  • true / falseTrue / False
  • nullNone

Саме ця відповідність робить обмін даними між API, файлами та локальними структурами дуже зручним.

Як читати JSON у Python

Для перетворення JSON-рядка або файлу в Python-об’єкт використовують функцію json.loads() або json.load().

Читання з рядка

Якщо JSON уже є у вигляді тексту, використовуйте loads():

import json
data = '{"name": "Олена", "age": 28, "city": "Київ"}'
user = json.loads(data)
print(user["name"])

Після виконання коду змінна user стане словником Python.

Читання з файлу

Якщо дані збережені у файлі .json, зручніше використовувати load():

import json
with 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 json
person = {"name": "Іван", "age": 34, "skills": ["Python", "SQL"]}
json_text = json.dumps(person)
print(json_text)

Це зручно, якщо JSON потрібно передати далі, наприклад, в API-запиті або в логах.

Запис у файл

Щоб зберегти дані у файл, використовуйте dump():

import json
person = {"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 json
text = '{"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 json
data = {"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-розробці.

Comments

comments