Edistynyt Python-kehityskurssi
Luku
>
Taso

Serialisointimoduulit
JSON-moduuli

Tavoite

Mene huoltoasemalle ja varmista, että tiedot tallennetaan oikein käyttämällä JSON-moduulia tiedostojen muotoiluun.

Uudisrakennusalueen lisärakennuksen eteläpuolella on huoltoasema. Koko aluetta on tarkoitus kehittää uudelleen viljelyalueeksi. Asemalla on useita työasemia, jotka käsittelevät tietoja uutta kehityshanketta varten. Voimme syöttää tiedot käsin, mutta se veisi paljon aikaa. Tietojen käsittelyprosessia varten voimme käyttää JSON:ia (JavaScript Object Notation). JSON on ohjelmointikielistä riippumaton tiedostomuoto, joka tallentaa tietoa helposti luettavassa muodossa tiedon varastointia ja siirtoa varten.

Pythonissa JSON:in käyttämiseksi voimme käyttää import json, joka antaa meille pääsyn JSON-funktioihin. Käytämme seuraavia funktioita:

  • json.loads(): Muuntaa JSON-merkkijonon Python-tiedoksi. Ottaa yhden argumentin, eli merkkijonon, jonka haluat jäsentää Pythoniksi.
  • json.dumps(): Muuntaa Python-tiedot JSON-merkkijonoksi. Tämä funktio voi ottaa enintään neljä (4) argumenttia, joista vain ensimmäinen on pakollinen. Ne ovat:
    1. Python-tiedot, jotka haluat muuntaa JSONiksi. Tiedot voivat olla seuraavia tyyppejä: sanakirjat, listat, tuplet, merkkijonot, kokonaisluvut, liukuluvut, boolean-arvot ja None-tyyppi.
    2. indent: välilyöntien määrä, jonka haluat lisätä kunkin tietoelementin alkuun.
    3. separators: merkit, jotka haluat lisätä tietoelementtien väliin ja/tai perään.
    4. sort_keys: lajittelee sanakirjan avaimet aakkosjärjestykseen, jos muunnat sanakirjatyyppiä.

Aloita menemällä vasemmalla olevan tukikohdan kultaisen X-merkin luo ja asetu muistiinpanon sisältävän pöydän eteen. Käytä read()-funktiota varmistaaksesi terminaalin tilan kannalta tarvittavat tiedot ja kirjaa ne muistiin. Kävele terminaalin edessä sijaitsevalle vaalealle X-merkin kohdalle. Siellä on vakio nimeltä transmission. Käytä json.dumps()-funktiota muotoillaksesi sen JSONiksi, jotta voimme muuntaa sen, esimerkiksi näin: transmission = json.dumps(transmission).

Luo sanakirja nimeltä load ja tallenna siihen json.loads()-funktion palauttama arvo käyttäen transmission-vakiota argumenttina. Tämä muuntaa JSONin Pythoniksi, jolloin sen tietoihin pääsee helposti käsiksi. Käytä speak()-funktiota muistiinpanossa mainittujen avaimien kanssa ja käyttäen luomaasi load-sanakirjaa. Esimerkiksi: player.speak(load["system"]). Tee tämä kaikille avaimille.

Kun olet tarkistanut terminaalin tiedot, kävele asemaa kohti, mene sisään ja suuntaa vaalean X-merkin kohdalle vihreän maton päällä. Tarkista muistiinpano read()-funktiolla, tutki ja kirjaa ylös arvot. Muokkausohjelmassa on valmiiksi kirjoitettu sanakirja nimeltä profile; täydennä sen puuttuvat arvot muistiinpanon tietojen mukaan.

Kävele tumman X-merkin kohdalle vihreän maton päällä, asetu terminaalin eteen ja luo muuttuja nimeltä transfer. Tallenna siihen json.dumps()-funktion palauttama arvo käyttäen ainoana argumenttina profile-sanakirjaa. Näin muunnamme sanakirjan JSON-merkkijonoksi. Käytä valmiiksi kirjoitettua display()-funktiota ja lisää transfer-JSON terminaaliin tallentaaksesi tiedot.

Kävele tumman X-merkin kohdalle punaisen maton päällä ja käytä read()-funktiota varmistaaksesi terminaaliin jo syötetyt tiedot. Tiedot eivät ole oikeassa muodossa, ja jotta ne voidaan tallentaa oikein, ne on muotoiltava JSONiksi. Tiedot ovat red_data-nimisessä sanakirjavakiossa. Luo muuttuja nimeltä red_storage ja tallenna siihen json.dumps()-funktion palauttama arvo.

Muotoillaksesi tiedot lisää funktiolle seuraavat argumentit: lisää red_data muuntaaksesi vakion JSONiksi, lisää indent ja aseta se arvoon 5 tekstin muotoilua varten, lisää separators ja aseta se arvoksi (\"- \", \" = \") lisätäksesi nämä merkit kunkin rivin loppuun. Rivi näyttää siis tältä: red_storage = json.dumps(red_data, indent=5, separators=(\"- \", \" = \")). Käytä valmiiksi kirjoitettua display()-funktiota ja lisää red_storage-JSON-merkkijono tallentaaksesi ja näyttääksesi muotoillut tiedot.

Kävele tumman X-merkin kohdalle sinisen maton päällä, asetu terminaalin eteen ja käytä read()-funktiota. Kuten aiemmin, tiedot eivät ole tallennettu oikein ja ne on muotoiltava ja lisäksi järjestettävä. Tiedot ovat blue_data-nimisessä vakiossa. Luo muuttuja nimeltä blue_storage ja tallenna siihen json.dumps()-funktion palauttama arvo.

Argumenteiksi lisää blue_data muuntaaksesi vakion JSONiksi, lisää indent ja aseta se arvoon 4 tekstin muotoilua varten, lisää separators ja aseta se arvoksi (\".0\", \" = \") lisätäksesi nämä merkit kunkin rivin loppuun. Lisäksi lisää argumentti sort_keys viimeisenä argumenttina ja aseta se arvoksi True, näin: sort_keys=True. Käytä valmiiksi kirjoitettua display()-funktiota ja lisää blue_storage-JSON-merkkijono tallentaaksesi ja näyttääksesi järjestetyt tiedot ja suorittaaksesi tason loppuun.

Koodikirja