Всіх вітаю! Сьогодні предметом вивчення буде те що таке JSON-формат та як можна конвертувати Python-код у JSON і навпаки.
Що таке JSON?
JSON — це спеціальний текстовий формат, призначений для обміну даними між серверами та клієнтами, тобто різними застосунками, сайтами тощо.
Даний формат організовує дані у вигляді “ключ-значення” подібно до словників у тому ж Python, але важливою відмінністю є те, що JSON є саме текстовим форматом, а не словником. Тобто навіть на вигляд JSON-формат дуже нагадує словники.
Робота з даними
Конвертуємо Python-код у JSON
Для конвертації Python-коду у JSON використовується функція dumps(), якій достатньо передати наш словник у вигляді параметра, і після цього ми отримаємо готові дані у форматі JSON.
Отже, імпортуємо модуль json:
import jsonСтворюємо словник:
info = {
"First name": "Robert",
"Last name": "Landsman",
"Age": "32",
"Country": "England",
"Job": "ML Engineer",
"Experience": "5+ years",
"Hobbies": ["Hiking", "Painting", "Cooking"]
}Тепер застосовуємо вищезгадану функцію та виводимо результат у консоль:
convert_to_json = json.dumps(info)
print(convert_to_json)Результат:
{"First name": "Robert", "Last name": "Landsman", "Age": "32", "Country": "England", "Job": "ML Engineer", "Experience": "5+ years", "Hobbies": ["Hiking", "Painting", "Cooking"]}Ось ми і отримали наші дані у форматі JSON. Можливо, ви не помітите відмінностей і подумаєте, що нічого не змінилося, але насправді це не так.
Якщо ми просто виведемо словник info до та після конвертації можна побачити, що після конвертації у результаті застосовуються подвійні лапки, а не одинарні. Це має значення, бо JSON використовує лише подвійні лапки.
Ось приклад:
print("До конвертації: ", info)
print("----")
print("Після конвертації: ", convert_to_json)До конвертації: {'First name': 'Robert', 'Last name': 'Landsman', 'Age': '32', 'Country': 'England', 'Job': 'ML Engineer', 'Experience': '5+ years', 'Hobbies': ['Hiking', 'Painting', 'Cooking']}
----
Після конвертації: {"First name": "Robert", "Last name": "Landsman", "Age": "32", "Country": "England", "Job": "ML Engineer", "Experience": "5+ years", "Hobbies": ["Hiking", "Painting", "Cooking"]}Також можна перевірити тип даних словника до та після конвертації:
print("До конвертації: ", type(info))
print("----")
print("Після конвертації: ", type(convert_to_json))
До конвертації: <class 'dict'>
----
Після конвертації: <class 'str'>Тут можна помітити, що після конвертації ми отримали вже не словник, а простий рядок. Це також має сенс, бо, як ми вже говорили, JSON — це текстовий формат.
Також варто знати, що у JSON можна конвертувати усі типи даних, крім множин (sets). Як приклад, спробуємо замінити значення ключа “Hobbies” зі списку на множину.
Ось приклад:
import json
info = {
"First name": "Robert",
"Last name": "Landsman",
"Age": "32",
"Country": "England",
"Job": "ML Engineer",
"Experience": "5+ years",
"Hobbies": {"Hiking", "Painting", "Cooking"}
}
convert_to_json = json.dumps(info)
print("До конвертації: ", convert_to_json)А ось помилка, яку ми отримали:
TypeError: Object of type set is not JSON serializableКонвертуємо JSON у Python-код
Тепер спробуємо конвертувати JSON-дані у звичайний Python-код. Для цього використовується функція loads(). Цій функції також достатньо просто передати JSON-дані, щоб перетворити їх знову в словник.
Візьмемо дані з попереднього коду та конвертуємо їх назад у Python-код. У нас вже є змінна convert_to_json, яка містить конвертовані JSON-дані, а тепер варто створити змінну convert_to_python, яка міститиме дані, конвертовані у Python-код.
Ось приклад:
import json
info = {
"First name": "Robert",
"Last name": "Landsman",
"Age": "32",
"Country": "England",
"Job": "ML Engineer",
"Experience": "5+ years",
"Hobbies": ["Hiking", "Painting", "Cooking"]
}
convert_to_json = json.dumps(info)
convert_to_python = json.loads(convert_to_json)
print("До конвертації: ", convert_to_json)
print("Після конвертації: ", convert_to_python)До конвертації: {"First name": "Robert", "Last name": "Landsman", "Age": "32", "Country": "England", "Job": "ML Engineer", "Experience": "5+ years", "Hobbies": ["Hiking", "Painting", "Cooking"]}
Після конвертації: {'First name': 'Robert', 'Last name': 'Landsman', 'Age': '32', 'Country': 'England', 'Job': 'ML Engineer', 'Experience': '5+ years', 'Hobbies': ['Hiking', 'Painting', 'Cooking']}Як бачимо, при зворотній конвертації одинарні лапки замінили подвійні, бо тепер це не JSON-дані.
Також піддалися зміні й типи даних, бо тепер ми знову отримали словник:
import json
info = {
"First name": "Robert",
"Last name": "Landsman",
"Age": "32",
"Country": "England",
"Job": "ML Engineer",
"Experience": "5+ years",
"Hobbies": ["Hiking", "Painting", "Cooking"]
}
convert_to_json = json.dumps(info)
convert_to_python = json.loads(convert_to_json)
print("До конвертації: ", type(convert_to_json))
print("Після конвертації: ", type(convert_to_python))До конвертації: <class 'str'>
Після конвертації: <class 'dict'>Висновок
У цій статті ми дізналися, що таке JSON, його призначення та навчилися працювати з цим форматом даних. Дякую за увагу!