Поглиблений курс розробки на 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 для збереження та відображення відсортованих даних, завершивши рівень.