Курс розробки на Python для просунутих
Розділ
>
Рівень

Модулі серіалізації
Модуль JSON

Мета

Перейдіть до сервісної станції та переконайтеся, що дані належним чином збережено за допомогою модуля JSON для форматування файлів.

Південніше від прибудови в новій будівельній зоні є сервісна станція; всю цю територію планують реконструювати для вирощування сільськогосподарських культур. На станції встановлені різноманітні термінали для обробки даних нового проєкту. Ми могли б вводити дані вручну, але це займе багато часу. Для оброблення даних ми можемо використати JSON, що означає JavaScript Object Notation; це формат даних, незалежний від мов програмування, який зберігає інформацію в зручному для читання вигляді для зберігання та передачі.

Щоб працювати з JSON у Python, ми можемо використовувати import json, який надасть нам доступ до функцій JSON; для наших цілей ми використовуватимемо такі функції:

  • json.loads(): Конвертує JSON-рядок у дані Python, приймає один аргумент — рядок, який ви хочете розпарсити в Python.
  • json.dumps(): Конвертує дані Python у об’єкт рядка JSON, ця функція може приймати до чотирьох аргументів, перший з яких обов’язковий. Це:
    1. Дані Python, які потрібно конвертувати в JSON: це можуть бути такі типи даних: словники, списки, кортежі, рядки, цілі числа, числа з плаваючою комою, булеві значення та None.
    2. indent: кількість пробілів, яку потрібно додати на початок кожного рівня відступу.
    3. separators: роздільники, які будуть розміщені між і/або в кінці елементів даних.
    4. 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 для збереження та відображення відсортованих даних і завершення рівня.

Книга Коду