Введение в объекты JSON в Python
Нотация объектов Java Script (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, которые можно увидеть из этого примера. Например, логические значения - это строчные буквы, а значения «None» - «null». Эквивалент словаря 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, но вы можете использовать любой инструмент по своему усмотрению. Затем в скрипте python импортируем модуль JSON:
import json
Давайте посмотрим на методы, доступные в этом модуле, используя метод dir ():
print(dir(json))
Мы сосредоточимся на методах загрузки и дампа. Чтобы продолжить, давайте воспользуемся методом open, чтобы открыть файл. В методе 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» с заглавной буквы. Кроме того, в словаре Python значение «album_sale» «Null» было проанализировано как «None».
Теперь, когда мы загрузили наши данные в виде словаря, мы можем получить доступ к значениям в проанализированном словаре по ключу. Например, если мы хотим получить доступ к «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, мы используем метод «load ()»:
album_s = json.loads(album_string) album_string.close() print(album_s)
Теперь предположим, что мы начали с данных в формате словаря и хотим отправить эти данные в базу данных в формате JSON. Мы можем использовать методы дампа для преобразования словарей в строковые объекты 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» с помощью метода дампа:
file2 = open("album2.txt", "w") json.dump(album2, file2)
Я остановлюсь на этом, но не стесняйтесь поиграть с кодом самостоятельно.
ВЫВОДЫ
Подводя итог, в этом посте мы обсудили, как отправлять и получать данные JSON с помощью библиотеки Python JSON. Мы обсудили методы загрузки, которые помогают нам получать данные, и методы дампа, которые помогают нам отправлять данные. Если вам интересно узнать больше о работе с объектами JSON в Python, я рекомендую Учебники Socratica на YouTube. Надеюсь, вы нашли этот пост полезным / интересным. Код из этого поста доступен на GitHub. Спасибо за чтение!