Знайомство з об’єктами JSON у Python

Java Script Object Notation (JSON) — це легкий формат даних, який багато в чому схожий на словники python. Об’єкти JSON корисні, оскільки браузери можуть їх швидко аналізувати, що ідеально підходить для передачі даних між клієнтом і сервером. У цій публікації ми обговоримо, як використовувати бібліотеку JSON python для надсилання та отримання даних JSON.

Давайте розпочнемо!

По-перше, давайте переглянемо наступний пакет JSON з інформацією про альбом The Beatle Yellow Submarine:

{
     "album_title" : "Yellow Submarine",     
     "release_year" : 1966,   
     "won_grammy" : false,
     "band" : "The Beatles",
     "album_sale": null
     "musicians" : ["John Lennon", "Paul McCartney", "George   Harrison", "Ringo Starr"],
     "studio" : {"studio_name": "Abbey Road Studios", "location": "London, England"}
     }

В об’єктах JSON ключами є рядки, а значеннями можуть бути рядки, числа (з плаваючою точкою або цілі), логічні значення, списки, значення null або інший об’єкт JSON. Існує кілька відмінностей між словниками python та об’єктами JSON, які можна помітити з цього прикладу. Наприклад, логічні значення мають нижній регістр, а значення «Немає» — «нульові». Еквівалентом словника Python є:

{
     "album_title" : "Yellow Submarine",     
     "release_year" : 1966,   
     "won_grammy" : False,
     "band" : "The Beatles",
     "album_sale": None
     "musicians" : ["John Lennon", "Paul McCartney", "George   Harrison", "Ringo Starr"],
     "studio" : {"studio_name": "Abbey Road Studios", "location": "London, England"}
     }

Тепер давайте збережемо зразки даних JSON у текстовий файл під назвою «album.txt». Я зробив це за допомогою командного рядка терміналу та текстового редактора «vim», але ви можете використовувати будь-який інструмент, який забажаєте. Далі, давайте імпортуємо модуль JSON у сценарій python:

import json

Давайте розглянемо методи, доступні в цьому модулі за допомогою методу «dir()»:

print(dir(json))

Ми зосередимося на методах завантаження та дампа. Щоб продовжити, скористайтеся методом open, щоб відкрити файл. У відкритому методі давайте вкажемо назву файлу «album.txt» і режим (читання або запис). Ми будемо читати файл, тому режим «r»:

album_json_file = open("album.txt", "r")

Далі ми можемо використати метод load для завантаження даних JSON з нашого файлу:

album = json.load(album_json_file)

Після завантаження даних JSON ми закриваємо файл:

album_json_file.close()

Тепер ми можемо роздрукувати завантажені дані JSON:

print(album)

Якщо ми надрукуємо тип цього об’єкта, ми побачимо, що це словник python:

print(type(album))

Давайте розглянемо відмінності між об’єктом JSON і словником python. Значення «won_grammy» в об’єкті JSON має значення «false», а в словнику — «False» з великої літери. Крім того, «value Null» «album_sale» було проаналізовано як «None» у словнику python.

Тепер, коли ми завантажили наші дані як словник, ми можемо отримати доступ до значень у проаналізованому словнику за ключем. Наприклад, якщо ми хочемо отримати доступ до «album_title», ми робимо наступне:

print("Album Title: ", album['album_title'])

Або якщо ми хочемо отримати доступ до року виходу альбому:

print("Release Year: ", album['release_year'])

У клієнт-серверних програмах зазвичай об’єкти JSON надходять у вигляді рядків. Наприклад, наш об’єкт JSON для інформації про альбом може виглядати приблизно так:

album_string = """{"album_title" : "Yellow Submarine",
     "release_year" : 1966,
     "won_grammy" : false,
     "band" : "The Beatles",
     "album_sale": null,
     "musicians" : ["John Lennon", "Paul McCartney", "George   Harrison", "Ringo Starr"],
     "studio" : {"studio_name": "Abbey Road Studios", "location": "London, England"}
     }"""

Щоб завантажити ці дані за допомогою модуля JSON, ми використовуємо метод «loads()»:

album_s = json.loads(album_string)
album_string.close()
print(album_s)

Тепер припустімо, що ми починаємо з даних у форматі словника та хочемо надіслати ці дані до бази даних у форматі JSON. Ми можемо використовувати методи dumps для перетворення словників у рядкові об’єкти JSON. Давайте визначимо наш оригінальний словник:

album2 = {'album_title': 'Yellow Submarine', 'release_year': 1966, 'won_grammy': False, 
 'band': 'The Beatles', 'album_sale': None, 'musicians': ['John Lennon', 'Paul McCartney', 'George   Harrison', 'Ringo Starr'], 
 'studio': {'studio_name': 'Abbey Road Studios', 'location': 'London, England'}}

Далі давайте надрукуємо рядковий об’єкт JSON за допомогою методу dumps:

print(json.dumps(album2))
print(type(json.dumps(album2)))

Наш словник було правильно розібрано як рядковий об’єкт JSON. Ми бачимо, що значення «album_sale» «None» тепер має значення «null», а значення «won_grammy» «False» тепер має значення «false».

Нарешті, ми можемо записати цей об’єкт JSON у файл «.txt» за допомогою методу dump:

file2 = open("album2.txt", "w")
json.dump(album2, file2)

Я зупинюся на цьому, але можете пограти з кодом самостійно.

ВИСНОВКИ

Підводячи підсумок, у цій публікації ми обговорили, як надсилати й отримувати дані JSON за допомогою бібліотеки JSON python. Ми обговорили методи завантаження, які допомагають нам отримувати дані, і методи дампу, які допомагають нам надсилати дані. Якщо вам цікаво дізнатися більше про роботу з об’єктами JSON у Python, я рекомендую підручники Socratica на YouTube. Сподіваюся, ця публікація була для вас корисною/цікавою. Код з цієї публікації доступний на GitHub. Дякую за читання!