Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň

Serializační moduly
Modul JSON

Cíl

Dojeďte k servisní stanici a ujistěte se, že data jsou správně uložena pomocí modulu JSON pro formátování souborů.

Na jih od přístavbové budovy v nové stavební zóně se nachází servisní stanice; celá tato oblast bude přestavěna pro pěstování plodin. Stanice má různé terminály pro zpracování dat pro tuto novou výstavbu; můžeme data zadávat ručně, ale to by zabralo spoustu času. Pro zpracování dat můžeme použít JSON (JavaScript Object Notation). Jedná se o formát dat nezávislý na programovacích jazycích, který uchovává informace v přehledné a snadno čitelné podobě pro ukládání a přenos dat.

Abyste mohli JSON používat v Pythonu, importujte import json, čímž získáte přístup k funkcím JSON. Pro naše účely budeme používat následující funkce:

  • json.loads(): Převádí JSON řetězec na data v Pythonu; bere jeden argument, a to řetězec, který chcete rozparsovat do Pythonu.
  • json.dumps(): Převádí data v Pythonu na objekt JSON řetězce. Tato funkce může přijmout až čtyři (4) argumenty, přičemž pouze první je povinný. Jsou to následující:
    1. Data v Pythonu, která chcete převést na JSON: mohou to být datové typy jako slovníky (dictionaries), seznamy (lists), n-tice (tuples), řetězce (string), celá čísla (integer), desetinná čísla (float), booleovské hodnoty (boolean) a None.
    2. indent: počet mezer, které chcete přidat na začátek každého datového bodu.
    3. separators: oddělovače, které chcete použít mezi nebo na konci datových bodů.
    4. sort_keys: pokud převádíte slovník, seřadí klíče slovníku abecedně.

Na začátku se vydejte k zlatému X v levé předsunuté základně a postavte se k pultu s poznámkou. Použijte funkci read(), abyste ověřili potřebné informace ke kontrole stavu terminálu a poznamenali si je. Pak přejděte k světlému X před terminálem, kde se nachází konstanta transmission. Použijte json.dumps() k jejímu naformátování jako JSON, abychom ji mohli převést, například takto: transmission = json.dumps(transmission).

Vytvořte slovník s názvem load a uložte do něj výsledek volání json.loads() s konstantou transmission jako argumentem. Tím se JSON převede na Python, což usnadní přístup k jeho informacím. Použijte funkci speak() s klíči uvedenými v poznámce (memo) a slovníkem load, který jste vytvořili. Například: player.speak(load["system"]). Proveďte to pro všechny klíče.

Po kontrole informací na terminálu se vydejte dolů k stanici, vstupte dovnitř a zamířte k světlému X nad zeleným kobercem. Pomocí funkce read() zkontrolujte poznámku (memo), ověřte si hodnoty a poznamenejte si je. V editoru je předdefinovaný slovník s názvem profile; doplňte chybějící hodnoty podle informací v poznámce.

Vyděte se k tmavému X nad zeleným kobercem, postavte se k terminálu a vytvořte proměnnou transfer, do které uložíte výsledek volání json.dumps() s jediným argumentem – slovníkem profile. Tím převedete slovník na JSON řetězec. Použijte předdefinovanou funkci display() a jako parametr jí předdejte JSON transfer, abyste uložili data do terminálu.

Vyděte se k tmavému X nad červeným kobercem a použijte funkci read(), abyste ověřili data již zadaná v terminálu. Data nejsou prezentována ve správném formátu; pro jejich řádné uložení je třeba je naformátovat jako JSON. Data jsou uložena v konstantě typu slovník s názvem red_data; vytvořte proměnnou red_storage a uložte do ní výsledek volání json.dumps().

Abychom data naformátovali, přidejte do funkce následující argumenty: nejprve red_data, aby se konstanta převedla na JSON, poté indent s hodnotou 5 pro odsazení textu, dále separators s hodnotou ("- ", " = ") pro přidání těchto symbolů na konec každého řádku. Řádek by měl vypadat takto: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")). Poté použijte předdefinovanou funkci display() a jako argument jí předdejte JSON řetězec red_storage, abyste uložili a zobrazili naformátovaná data.

Vyděte se k tmavému X nad modrým kobercem, postavte se k terminálu a použijte funkci read(). Stejně jako předtím data nejsou správně uložena a je nutné je naformátovat a zároveň setřídit. Data jsou uložena v konstantě blue_data; vytvořte proměnnou blue_storage a uložte do ní výsledek volání json.dumps().

Jako argumenty přidejte blue_data pro převod konstanty na JSON, indent s hodnotou 4 pro formátování textu, separators s hodnotou (".0", " = ") pro přidání těchto symbolů na konec každého řádku. K tomu přidejte ještě argument sort_keys jako poslední argument a nastavte jej na True, například takto: sort_keys=True. Poté použijte předdefinovanou funkci display() a jako argument jí předdejte JSON řetězec blue_storage, abyste uložili a zobrazili setříděná data a dokončili úroveň.

Kniha Kódu