Haladó Python Fejlesztői Tanfolyam
Fejezet
>
Szint
Szerializációs modulok
JSON modul
Célkitűzés
Menj a szervizállomásra, és gondoskodj arról, hogy az adatokat a JSON-modul használatával megfelelően tárold.
Az új építési terület melléképületének déli részén található egy szervizállomás; ezt a teljes területet mezőgazdasági művelésre fogják átalakítani. Az állomáson többféle terminál dolgozza fel az adatokat az új fejlesztéshez; ezeket kézzel írni rengeteg időt venne igénybe. Az adatok kezeléséhez használhatjuk a JSON-t (JavaScript Object Notation), amely egy programozási nyelvektől független adatformátum, és az információkat könnyen olvasható formában tárolja, mind tárolásra, mind továbbításra.
A JSON használatához Pythonban az import json utasítást kell alkalmaznunk, amely hozzáférést biztosít a JSON-funkciókhoz. Számunkra a következő függvényeket fogjuk használni:
json.loads(): JSON-karakterláncot alakít Python-adattá, egy argumentumot vár, ami a feldolgozandó JSON-karakterlánc.json.dumps(): Python-adatot alakít JSON-karakterlánc-objektummá; ez a függvény legfeljebb négy (4) argumentumot fogadhat, de csak az első kötelező. Ezek a következők:- A Python-adat, amelyet JSON-formátumra szeretnél alakítani: lehet például szótár (dictionary), lista, tuple, karakterlánc, egész szám, valós szám, logikai érték vagy None.
indent: a behúzásra szánt szóközök száma minden adatpont elején.separators: az adatpontok közötti és/vagy az adatpontok végén megjelenítendő elválasztók.sort_keys: ha szótárat konvertálsz, a kulcsokat ábécé sorrendbe rendezi.
Először is menj a bal oldali támaszpont arany X-jelzéséhez, és állj szembe a feljegyzéseket tartalmazó íróasztallal. A read() függvénnyel ellenőrizd a terminál állapotának megerősítéséhez szükséges információkat, és jegyezd fel azokat. Sétálj a terminál előtti világos X-jelzéshez, ahol található egy transmission nevű konstans; használd a json.dumps()-t, hogy JSON-formátumúvá alakítsd, például: transmission = json.dumps(transmission).
Hozz létre egy load nevű szótárat, és tárold benne a json.loads(transmission) értékét. Ez a JSON-t Python-adattá alakítja, így az információk könnyen elérhetők. Használd a speak() függvényt a feljegyzésben szereplő kulcsokra a load szótár segítségével. Például: player.speak(load["system"]), és tedd ezt meg minden kulccsal.
Miután ellenőrizted a terminálon az információkat, menj le a szervizállomás felé, lépj be, és állj a zöld szőnyeg felett található világos X-jelzéshez. A read() függvénnyel nézd meg a feljegyzést, ellenőrizd és jegyezd fel az értékeket. A szerkesztőben van egy előre definiált profile nevű szótár; töltsd ki a hiányzó értékeket a feljegyzésben szereplő információkkal.
Sétálj a zöld szőnyeg feletti sötét X-jelzéshez, állj a terminál elé, és hozz létre egy transfer nevű változót, amelybe a json.dumps(profile) értékét tárolod. Ezzel a szótárat JSON-karakterlánccá alakítod. Használd az előre definiált display() függvényt, és add hozzá a transfer JSON-t az adatok terminálba történő tárolásához.
Sétálj a vörös szőnyeg feletti sötét X-jelzéshez, és használd a read() függvényt az adatok ellenőrzéséhez, amelyek már a terminálba vannak írva. Az adat nincs megfelelő formátumban megjelenítve; ahhoz, hogy helyesen tárolhassuk, JSON-formátumban kell tárolni és formázni. Az adat egy red_data nevű, szótár típusú konstansban van tárolva; hozz létre egy red_storage nevű változót, és tárold benne a json.dumps(red_data) eredményét.
Az adatok formázásához add meg a következő argumentumokat a függvénynek: add át a red_data-t a konvertáláshoz JSON-be, az indent értékét állítsd 5-re a szöveg formázásához, a separators-hez add meg a ("- ", " = ") értéket, hogy ezek a szimbólumok minden sor végén szerepeljenek. A sor így nézzen ki: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")). Használd az előre definiált display() függvényt, és add hozzá a red_storage JSON-karakterláncot a formázott adatok tárolásához és megjelenítéséhez.
Sétálj a kék szőnyeg feletti sötét X-jelzéshez, állj a terminál elé, és használd a read() függvényt: ahogy korábban is, az adat nincs megfelelően tárolva, formázni és rendezni kell. Az adatot egy blue_data nevű konstans tárolja; hozz létre egy blue_storage nevű változót, és tárold benne a json.dumps(blue_data) eredményét.
Argumentumokként add át a blue_data-t a JSON-konverzióhoz, az indent-et állítsd 4-re a szöveg formázásához, a separators-hez add meg a (".0", " = ") értéket, hogy ezek a szimbólumok minden sor végén szerepeljenek. Ezen felül add meg a sort_keys argumentumot utolsóként, és állítsd True-ra, így: sort_keys=True. Használd az előre definiált display() függvényt, és add hozzá a blue_storage JSON-karakterláncot a rendezett adatok tárolásához és megjelenítéséhez, ezzel befejezve a szintet.