Продвинутый курс разработки на Python
Глава
>
Уровень
Модули сериализации
Модуль JSON
Цель
Отправляйтесь на сервисную станцию и убедитесь, что данные правильно сохранены, используя модуль JSON для форматирования файлов.
Сервисная станция расположена к югу от здания пристройки в зоне нового строительства, которая в будущем будет переоборудована под выращивание сельскохозяйственных культур. На станции работают различные терминалы, обрабатывающие данные для нового проекта. Мы можем вносить данные вручную, но это займет слишком много времени. Для обработки данных можно использовать JSON (JavaScript Object Notation) — формат данных, независимый от языков программирования, который хранит информацию в удобочитаемом виде для хранения и передачи данных.
Чтобы использовать JSON в Python, можно применить команду import json, которая даст нам доступ к функциям JSON. Для наших целей мы будем использовать следующие функции:
json.loads(): Преобразует строку JSON в данные Python; принимает один аргумент — строку, которую необходимо преобразовать в Python.json.dumps(): Преобразует данные Python в строковый объект JSON. Эта функция может принимать до четырех (4) аргументов, при этом обязательным является только первый. Они следующие:- Данные Python, которые вы хотите преобразовать в JSON: это могут быть словари, списки, кортежи, строки, целые числа, числа с плавающей точкой, булевы значения и тип None.
indent: количество пробелов, которое вы хотите добавить в начале каждого уровня данных.separators: элементы, которые вы хотите разместить между и/или в конце точек данных.sort_keys: сортирует ключи словаря в алфавитном порядке, если вы преобразуете данные типа словаря.
Для начала направляйтесь к золотому X-отметке в форпосте слева и повернитесь к столу с памяткой. Используйте функцию read() для проверки информации, необходимой для подтверждения статуса терминала, и запишите её. Перейдите к светлой X-отметке перед терминалом, где находится константа transmission. Используйте json.dumps() для форматирования её в JSON, чтобы мы могли её конвертировать, вот так: transmission = json.dumps(transmission) .
Создайте словарь с именем load и сохраните в нём результат вызова функции json.loads() с константой transmission в качестве аргумента. Это преобразует JSON в данные Python, что облегчит доступ к информации. Затем используйте функцию speak() с ключами, указанными в памятке, опираясь на созданный словарь load. Например: player.speak(load["system"]) — сделайте это для всех ключей.
После проверки информации на терминале направляйтесь к станции, зайдите внутрь и подойдите к светлой X-отметке на зеленом ковре. Проверьте памятку с помощью функции read(), зафиксируйте значения, а затем в редакторе заполните недостающие данные в подготовленном словаре с именем profile информацией из памятки.
Подойдите к тёмной X-отметке на зеленом ковре, повернитесь к терминалу и создайте переменную с именем transfer, в которую сохраните результат вызова функции json.dumps() с передачей словаря profile в качестве единственного аргумента. Таким образом, словарь преобразуется в строковый объект JSON. Используйте подготовленную функцию display(), передав ей JSON из переменной transfer для сохранения данных на терминале.
Подойдите к тёмной X-отметке на красном ковре и используйте функцию read(), чтобы проверить данные, уже введённые в терминале. Данные представлены в неправильном формате, и для корректного сохранения информацию необходимо отформатировать в JSON. Данные хранятся в константе-словаре с именем red_data. Создайте переменную red_storage и сохраните в ней результат вызова функции json.dumps().
Чтобы отформатировать данные, добавьте к функции следующие аргументы: передайте red_data для преобразования константы в JSON, используйте параметр indent со значением 5 для форматирования текста, а также параметр separators со значением ("- ", " = "), чтобы добавить эти символы в конце каждой строки. Строка должна выглядеть следующим образом: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")). Используйте подготовленную функцию display() и передайте ей JSON из переменной red_storage для сохранения и отображения отформатированных данных.
Подойдите к тёмной X-отметке на синем ковре, повернитесь к терминалу и используйте функцию read(). Как и ранее, данные сохранены неправильно и их необходимо не только отформатировать, но и отсортировать. Данные хранятся в константе с именем blue_data. Создайте переменную blue_storage и сохраните в ней результат вызова функции json.dumps().
В качестве аргументов: передайте blue_data для преобразования константы в JSON, используйте параметр indent со значением 4 для форматирования текста, а также параметр separators со значением (".0", " = "), чтобы добавить эти символы в конце каждой строки. Кроме того, добавьте аргумент sort_keys в качестве последнего и установите его значение в True, следующим образом: sort_keys=True. Используйте подготовленную функцию display() и передайте ей JSON из переменной blue_storage для сохранения и отображения отсортированных данных, что позволит завершить уровень.