Geavanceerde Python-ontwikkelingscursus
Hoofdstuk
>
Niveau
Serialisatiemodules
JSON-module
Doelstelling
Ga naar het service station en zorg ervoor dat gegevens correct worden opgeslagen door het JSON-module te gebruiken om bestanden te formatteren.
Er is een service station ten zuiden van het bijgebouw in het nieuwbouwgebied. Dit hele gebied wordt herontwikkeld om gewassen te verbouwen. Het station heeft verschillende terminals die gegevens verwerken voor de nieuwe ontwikkeling. We kunnen de gegevens met de hand invoeren, maar dat zou veel tijd kosten. Voor het verwerken van gegevens kunnen we JSON gebruiken, wat staat voor JavaScript Object Notation. Dit is een dataformaat dat onafhankelijk is van programmeertalen en informatie opslaat in een gemakkelijk leesbare vorm voor gegevensopslag en -overdracht.
Om JSON met Python te gebruiken kun je import json gebruiken, waarmee je toegang krijgt tot JSON-functies. Voor onze doeleinden gebruiken we de volgende functies:
json.loads(): Zet een JSON-string om in Python-gegevens. Neemt één argument: de string die je wilt omzetten naar Python.json.dumps(): Zet Python-gegevens om in een JSON-stringobject. Deze functie kan tot vier (4) argumenten accepteren, waarvan er maar één vereist is. Deze zijn als volgt.- De Python-gegevens die je naar JSON wilt omzetten: dit kunnen zijn van de volgende datatypes: dictionaries, lijsten, tuples, strings, integers, floats, booleans en None.
indent: aantal spaties dat je aan het begin van elk gegevenselement wilt toevoegenseparators: de karakters die je tussen en/of aan het einde van gegevenselementen wilt weergevensort_keys: sorteert de keys van een dictionary alfabetisch als je een dictionary converteert.
Om te beginnen, ga naar het gouden X-teken in het outpost aan de linkerkant en richt je op het bureau met de memo. Gebruik de functie read() om de informatie te controleren die nodig is om de status van de terminal te bevestigen en noteer deze. Loop naar het lichte X-teken voor de terminal. Er is een constante genaamd transmission. Gebruik json.dumps() om deze als JSON te formatteren, zodat we hem kunnen omzetten, zoals: transmission = json.dumps(transmission).
Maak een dictionary genaamd load en sla de waarde van json.loads() op met de constante transmission als argument. Dit zet de JSON om naar Python, zodat de informatie gemakkelijk toegankelijk is. Gebruik de functie speak() met de keys die in de memo staan en met de load-dictionary die je hebt gemaakt. Bijvoorbeeld: player.speak(load["system"]). Doe dit voor alle keys.
Na het controleren van de informatie op de terminal, loop je naar het station, ga naar binnen en ga naar het lichte X-teken op het groene tapijt. Bekijk de memo met de functie read(), controleer en noteer de waarden. In de editor staat een voorgedefinieerde dictionary genaamd profile. Vul de ontbrekende waarden in met de informatie uit de memo.
Loop naar het donkere X-teken op het groene tapijt, richt je op de terminal en maak een variabele genaamd transfer. Sla de waarde van json.dumps() op en geef de profile-dictionary als enige argument. Hiermee zetten we de dictionary om in een JSON-stringobject. Gebruik de vooraf geschreven functie display() en geef de JSON in transfer door om de gegevens op te slaan in de terminal.
Loop naar het donkere X-teken op het rode tapijt en gebruik de functie read() om de al ingevoerde gegevens in de terminal te controleren. De gegevens zijn niet in het juiste formaat gepresenteerd. Om de informatie correct op te slaan, moet deze in JSON worden opgeslagen en geformatteerd. De gegevens zijn opgeslagen in een dictionaryconstante genaamd red_data. Maak een variabele genaamd red_storage en sla de waarde van de functie json.dumps() op.
Om de gegevens te formatteren, voeg je de volgende argumenten toe aan de functie: geef red_data op om de constante naar JSON om te zetten; voeg indent toe en stel deze in op 5 om de tekst te formatteren; voeg separators toe en gebruik ("- ", " = ") om deze symbolen aan het einde van elke regel toe te voegen. De regel zou er als volgt uit moeten zien: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")). Gebruik de vooraf geschreven functie display() en geef de JSON-string in red_storage door om de geformatteerde gegevens op te slaan en weer te geven.
Loop naar het donkere X-teken op het blauwe tapijt, richt je op de terminal en gebruik de functie read(). Net als eerder zijn de gegevens niet correct opgeslagen en moeten ze worden geformatteerd maar ook gesorteerd. De gegevens zijn opgeslagen in een constante genaamd blue_data. Maak een variabele genaamd blue_storage en sla de waarde van de functie json.dumps() op.
Voor de argumenten: geef blue_data op om de constante naar JSON om te zetten; voeg indent toe en stel deze in op 4 om de tekst te formatteren; voeg separators toe en gebruik (".0", " = ") om deze symbolen aan het einde van elke regel toe te voegen. Voeg daarnaast als laatste argument sort_keys toe en stel deze in op True, zoals: sort_keys=True. Gebruik de vooraf geschreven functie display() en geef de JSON-string in blue_storage door om de gesorteerde gegevens op te slaan en weer te geven en voltooi het niveau.