Corso avanzato di sviluppo Python
Capitolo
>
Livello
Moduli di serializzazione
Modulo JSON
Obiettivo
Vai alla stazione di servizio e assicurati che i dati siano memorizzati correttamente utilizzando il modulo JSON per formattare i file.
C'è una stazione di servizio a sud dell'edificio annesso nella nuova area di costruzione; tutta quest'area sarà riqualificata per la coltivazione. La stazione ha vari terminal che elaborano i dati per il nuovo sviluppo; potremmo inserire i dati manualmente, ma richiederebbe molto tempo. Per gestire i dati possiamo usare JSON, che sta per JavaScript Object Notation: è un formato di dati indipendente dal linguaggio di programmazione e memorizza le informazioni in modo facilmente leggibile per l'archiviazione e la trasmissione.
Per usare i JSON con Python possiamo usare import json, che ci darà accesso alle funzioni JSON; per i nostri scopi useremo le seguenti funzioni:
json.loads(): converte una stringa JSON in dati Python; richiede un argomento, ossia la stringa da analizzare.json.dumps(): converte dati Python in un oggetto stringa JSON; questa funzione può accettare fino a quattro(4) argomenti, ma solo il primo è obbligatorio. Sono i seguenti.- Dati Python da convertire in JSON: possono essere dei seguenti tipi: dizionari, liste, tuple, stringhe, interi, float, booleani e None.
indent: numero di spazi da aggiungere all'inizio di ogni elemento.separators: porzioni che si desidera appaiano tra e/o alla fine degli elementi.sort_keys: ordina alfabeticamente le chiavi di un dizionario se si sta convertendo un file di tipo dizionario.
Per iniziare, recati al segno X dorato nell'avamposto a sinistra e posizionati di fronte alla scrivania con il promemoria. Usa la funzione read() per verificare le informazioni necessarie a confermare lo stato del terminale e annotale. Cammina fino al segno X chiaro davanti al terminale; c'è una costante chiamata transmission, usa json.dumps() per formattarla come JSON in modo da poterla convertire, in questo modo: transmission = json.dumps(transmission).
Crea un dizionario chiamato load e memorizza il valore di json.loads() usando la costante transmission come argomento. Questo convertirà il JSON in Python rendendo le informazioni facilmente accessibili. Usa la funzione speak() con le chiavi indicate nel promemoria e sfruttando il dizionario load che hai creato. Per esempio: player.speak(load["system"]); fai lo stesso per tutte le chiavi.
Dopo aver controllato le informazioni sul terminale, scendi verso la stazione, entra e dirigiti al segno X chiaro sul tappeto verde. Controlla il promemoria usando la funzione read(), verifica e annota i valori; nell’editor è presente un dizionario predefinito chiamato profile, compila i valori mancanti con le informazioni del promemoria.
Cammina fino al segno X scuro sul tappeto verde, posizionati di fronte al terminale e crea una variabile chiamata transfer, assegnandole il valore di json.dumps() aggiungendo il dizionario profile come unico argomento. In questo modo convertiamo il dizionario in un oggetto stringa JSON. Usa la funzione predefinita display() e aggiungi il JSON transfer per memorizzare i dati nel terminale.
Cammina fino al segno X scuro sul tappeto rosso e usa la funzione read() per verificare i dati già inseriti nel terminale. I dati non sono presentati in un formato corretto; per memorizzarli correttamente devono essere formattati in JSON. I dati sono memorizzati in una costante dizionario chiamata red_data; crea una variabile chiamata red_storage e assegna il valore della funzione json.dumps().
Per formattare i dati, aggiungi i seguenti argomenti alla funzione: aggiungi red_data per convertire la costante in JSON, indent impostato a 5 per formattare il testo, separators con ("- ", " = ") per aggiungere questi simboli alla fine di ogni riga. La riga dovrebbe essere così: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")). Usa la funzione predefinita display() e aggiungi la stringa JSON red_storage per memorizzare e visualizzare i dati formattati.
Cammina fino al segno X scuro sul tappeto blu, posizionati di fronte al terminale e usa la funzione read(); come prima, i dati non sono memorizzati correttamente e devono essere formattati ma anche ordinati. I dati sono memorizzati in una costante chiamata blue_data; crea una variabile chiamata blue_storage e assegnale il valore della funzione json.dumps().
Per gli argomenti: aggiungi blue_data per convertire la costante in JSON, indent impostato a 4 per formattare il testo, separators con (".0", " = ") per aggiungere questi simboli alla fine di ogni riga. Inoltre, aggiungi l'argomento sort_keys come ultimo parametro e impostalo su True, in questo modo: sort_keys=True. Usa la funzione predefinita display() e aggiungi la stringa JSON blue_storage per memorizzare e visualizzare i dati ordinati e completare il livello.