Zaawansowany kurs programowania w Pythonie
Rozdział
>
Poziom

Moduły serializacji
Moduł JSON

Cel

Udaj się na stację serwisową i upewnij się, że dane są poprawnie przechowywane, używając modułu JSON do formatowania plików.

Na południe od budynku aneksu w nowej strefie budowy znajduje się stacja serwisowa. Cały ten obszar ma zostać przekształcony pod uprawę roślin. Stacja dysponuje różnymi terminalami przetwarzającymi dane dla nowego projektu; moglibyśmy wprowadzać dane ręcznie, ale zajęłoby to dużo czasu. Do obsługi danych możemy użyć JSON, co oznacza JavaScript Object Notation – jest to format danych niezależny od języków programowania, umożliwiający przechowywanie informacji w czytelny sposób oraz łatwy przesył i zapis.

Aby używać JSON-ów z Pythonem, możemy użyć import json, co da nam dostęp do funkcji JSON. Do naszych celów będziemy używać następujących funkcji:

  • json.loads(): Konwertuje łańcuch JSON na dane Pythona; przyjmuje jeden argument, którym jest łańcuch, który chcesz przetworzyć na Pythona.
  • json.dumps(): Konwertuje dane Pythona na obiekt łańcucha JSON; funkcja ta może przyjąć do czterech(4) argumentów, z czego tylko pierwszy jest wymagany. Są to kolejno:
    1. Dane Pythona, które chcesz przekonwertować na JSON: mogą to być następujące typy danych: słowniki, listy, krotki, łańcuchy, liczby całkowite, liczby zmiennoprzecinkowe, wartości logiczne oraz None.
    2. indent: liczba spacji, które chcesz dodać na początku każdego rekordu danych
    3. separators: elementy, które chcesz umieszczać między rekordami danych i/lub na końcu rekordów.
    4. sort_keys: sortuje klucze słownika alfabetycznie, jeśli konwertujesz typ pliku słownikowego.

Aby zacząć, udaj się do złotego oznaczenia X w lewym posterunku i stań twarzą do biurka z notatką. Użyj funkcji read(), aby zweryfikować informacje potrzebne do potwierdzenia statusu terminala i zapisz je. Podejdź do jasnego oznaczenia X przed terminalem; znajduje się tam stała o nazwie transmission. Użyj json.dumps(), aby sformatować ją jako JSON do konwersji, w ten sposób: transmission = json.dumps(transmission).

Utwórz słownik o nazwie load i przypisz mu wartość zwracaną przez json.loads(), z argumentem transmission. Spowoduje to konwersję JSON-a na dane Pythona, dzięki czemu informacje będą łatwo dostępne. Użyj funkcji speak() z kluczami wyszczególnionymi w notatce, wykorzystując utworzony słownik load. Na przykład: player.speak(load["system"]). Powtórz to dla wszystkich kluczy.

Po sprawdzeniu informacji na terminalu przejdź w kierunku stacji, wejdź do środka i podejdź do jasnego oznaczenia X nad zielonym dywanem. Sprawdź notatkę za pomocą funkcji read(), zanotuj wartości; w edytorze jest wstępnie zdefiniowany słownik o nazwie profile. Uzupełnij brakujące wartości, korzystając z informacji z notatki.

Podejdź do ciemnego oznaczenia X nad zielonym dywanem, stań przed terminalem i utwórz zmienną o nazwie transfer, przypisując jej wartość zwracaną przez json.dumps(), podając słownik profile jako jedyny argument. W ten sposób konwertujesz słownik na łańcuch JSON. Użyj wstępnie zdefiniowanej funkcji display() i przekaż jej JSON transfer, aby zapisać dane w terminalu.

Przejdź do ciemnego oznaczenia X nad czerwonym dywanem i użyj funkcji read(), aby zweryfikować dane już zapisane w terminalu. Dane nie są przedstawione w odpowiednim formacie; aby je poprawnie zapisać, muszą być przechowane i sformatowane jako JSON. Dane znajdują się w stałej słownikowej red_data; utwórz zmienną o nazwie red_storage i przypisz jej wartość zwracaną przez funkcję json.dumps().

Aby sformatować dane, dodaj do funkcji następujące argumenty: przekaż red_data, aby przekonwertować stałą na JSON, dodaj indent i ustaw go na 5, aby sformatować tekst, dodaj separators i ustaw je na (\"- \", \" = \" ), aby te symbole pojawiły się na końcu każdej linii. Linia powinna wyglądać tak: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")). Użyj wstępnie zdefiniowanej funkcji display() i przekaż jej łańcuch JSON red_storage, aby zapisać i wyświetlić sformatowane dane.

Przejdź do ciemnego oznaczenia X nad niebieskim dywanem, stań przed terminalem i użyj funkcji read(). Podobnie jak wcześniej, dane nie są poprawnie zapisane, wymagają formatowania i posortowania. Dane są przechowywane w stałej blue_data; utwórz zmienną o nazwie blue_storage i przypisz jej wartość zwracaną przez funkcję json.dumps().

Do argumentów dodaj: blue_data, aby przekonwertować stałą na JSON, indent ustaw na 4, aby sformatować tekst, separators ustaw na (".0", " = "), aby te symbole pojawiały się na końcu każdej linii. Dodatkowo jako ostatni argument dodaj sort_keys i ustaw go na True, w ten sposób: sort_keys=True. Użyj wstępnie zdefiniowanej funkcji display() i przekaż jej łańcuch JSON blue_storage, aby zapisać i wyświetlić posortowane dane i ukończyć poziom.

Księga Kodów