Модуль json из стандартной библиотеки языка программирования Python является достаточно эффективным средством для взаимодействия с форматом JavaScript Object Notation. Функции данного модуля позволяют легко кодировать и декодировать информацию, работая с разными JSON-объектами. Это значительно повышает удобство создания веб-приложений в Python.
Что такое JSON?
JSON (JavaScript Object Notation) является чрезвычайно распространенным форматом данных, которые представлены в текстовом виде. Как можно догадаться из названия, JSON изначально основывается на популярном языке программирования JavaScript, но несмотря на это отлично работает на разных платформах, благодаря своей универсальности и простоте. Данный формат предоставляет программисту возможность осуществлять сериализацию структур информации для последующей передачи между приложениями. Примером тому вполне может быть обмен текстовыми сведениями о клиентах в интернет-магазине между браузером и сервером.
Информация в формате JSON может быть представлена в двух видах:
- Последовательность пар с ключами и соответствующими им значениями;
- Просто упорядоченный набор значений.
Как правило, любой высокоуровневый язык программирования поддерживает эти структуры данных. Значения, которые передаются в JSON, могут являться объектами, строками, числами, одномерными массивами, а также литералами (true, false, null). Python поддерживает работу с форматом JSON, благодаря модулю json и методам по кодированию и декодированию данных. Это позволяет легко получать и отправлять информацию в комфортном для чтения виде.
Сохранение данных в JSON
Чтобы записать информацию в формате JSON с помощью средств языка Python, нужно прежде всего подключить модуль json, воспользовавшись командой import json в начале файла с кодом программы. Метод dumps отвечает за автоматическую упаковку данных в JSON, принимая при этом переменную, которая содержит всю необходимую информацию. В следующем примере демонстрируется кодирование словаря под названием dictData. В нем имеются некие сведения о пользователе интернет-портала, такие как идентификационный код, логин, пароль, полное имя, номер телефона, адрес электронной почты и данные об активности. Эти значения представлены в виде обычных строк, а также целых чисел и булевых литералов True/False.
import json dictData = { "ID" : 210450, "login" : "admin", "name" : "John Smith", "password" : "root", "phone" : 5550505, "email" : "smith@mail.com", "online" : True } jsonData = json.dumps(dictData) print(jsonData) {"ID": 210450, "login": "admin", "name": "John Smith", "password": "root", "phone": 5550505, "email": "smith@mail.com", "online": true}
Результат выполнения метода dumps передается в переменную под названием jsonData. Таким образом, словарь dictData был преобразован в JSON-формат всего одной строчкой. Как можно увидеть, благодаря функции print, все сведения были закодированы в своем изначальном виде. Стоит заметить, что данные из поля online были преобразованы из литерала True в true.
С помощью Python сделаем запись json в файл. Для этого дополним код предыдущего примера следующим образом:
with open("data.json", "w") as file: file.write(jsonData)
Подробнее про запись данных в текстовые файлы описано в отдельной статье на нашем сайте.
Разбор JSON данных
Обратную операцию по быстрому раскодированию JSON-формата при помощи средств языка Python выполняет встроенный метод loads. С его помощью можно легко преобразовать JSON в объект, с которым можно свободно взаимодействовать в программе. Приведенный немного ниже пример демонстрирует создание аналогичного JSON-объекта, где имеется информация о пользователе. Передавая переменную jsonData в качестве параметра методу loads, на выходе можно получить словарь dictData. И уже из него мы можем получить все необходимые данные. Как видно из примера, print выводит отдельные поля dictData, такие, как полное имя, номер телефона, адрес электронной почты и информацию об активности.
import json jsonData = """ { "ID" : 210450, "login" : "admin", "name" : "John Smith", "password" : "root", "phone" : 5550505, "email" : "smith@mail.com", "online" : true } """ dictData = json.loads(jsonData) print(dictData["name"]) print(dictData["phone"]) print(dictData["email"]) print(dictData["online"]) John Smith 5550505 smith@mail.com True
Как и в примере с кодировкой данных в JSON, литерал true был автоматически преобразован к True для того, чтобы с ним можно было работать при помощи средств языка Python. Следует заметить, что функции dumps и loads способны взаимодействовать и с более сложными видами объектов, включая вложенные разновидности словарей с множеством строковых значений.
Таким образом осуществляется кодирование и декодирование данных в формате JSON за счет встроенных средств языка программирования Python. Как можно было заметить, эти операции выполняются довольно просто, благодаря удобным методам dumps и loads из модуля json.