Введение в объекты 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. Спасибо за чтение!