Il formato JSON e come lavora coi Dizionari di App Inventor

JSON (JavaScript Object Notation) https://www.json.org/json-it.html  è un noto formato di scambio di dati utilizzato dalle interfacce API.

JSON consente di raggruppare un vasto numero di dati in un’unica porzione di testo e di inviarli a un altro servizio. Grazie a Json è possibile dialogare tra più linguaggi di programmazione. È adattabile ad ogni tipo di situazione, oltre ad essere dotato di una struttura davvero semplice, in grado di consentire agli sviluppatori di comprendere immediatamente, il significato di ciò che stiamo vedendo. Attraverso le poche righe di codice, infatti, il programmatore può leggere facilmente l’output e di conseguenza può realizzare degli script articolati, che sfruttano i dati provenienti dai Social Network o dai Servizi Web.

Questa sua caratteristica non è per niente una cosa da poco, ed è un qualcosa di fondamentale importanza quando si eseguono lavori su progetti vasti ed impegnativi. JSON, JSV & XML sono i tre formati più utilizzati per la gestione di questi dati.

Introduzione

Un dizionario è una raccolta (collection) non ordinata di oggetti indirizzati tramite chiavi UNIVOCHE (invece che per posizione, come nelle Liste che sono oggetti ordinati legati a degli Indici). Di conseguenza, i dizionari sono più flessibili nell’utilizzo.

Nei linguaggi di programmazione assume diversi nomi: recordoggettostructtabella hashelenco di chiavimappaarray associativomatrice associativa.

dizionari (o Oggetto), sono strutture di dati a coppia (pairs) che associano un valore chiave (Key), con un altro valore.

Le coppie oltre a chiave/valore, si chiamano anche nomi/valori o stringhe/valori.

logo Json

Un modo comune di visualizzare dizionari è l’utilizzo di JSON, cioè un file di testo del tipo:

{
  "id":  1,
  "name":  "Tim the Beaver",
  "school": {
  "name": "Massachusetts Institute of Technology"
  },
  "enrolled": true,
  "classes": ["6.001", "18.01", "8.01"]
}

Se lo vogliano leggere sequenzialmente, sarà:

{"id":1,"name":"Tim the Beaver","school":{"name":"Massachusetts Institute of Technology"},"enrolled": true,"classes": ["6.001", "18.01", "8.01"]}

Nel Dizionario contenuto all’interno di {}, vediamo che ci sono cinque Coppie separate da ,:

  1. "id":1,
  2. "name":"Tim the Beaver",
  3. "school":{"name":"Massachusetts Institute of Technology"},
  4. "enrolled": true,
  5. "classes": ["6.001", "18.01", "8.01"]

di cui le Key sono:

  1. "id"
  2. "name"
  3. "school"
  4. "enrolled"
  5. "classes"

e i relativi Valori sono (un’attenzione ai simboli "" : []):

  1. il numero 1
  2. una stringa "Tim the Beaver"
  3. un altro dizionario formato dalla coppia "name":"Massachusetts Institute of Technology"
  4. un valore booleiano true
  5. una Lista ( Array ) ["6.001", "18.01", "8.01"]

Caricare JSON

Per caricare il file bisogna essere in possesso dell’URL ed aver caricato il componente WEB del Gruppo Connettività:

Normalmente per accedere alle API, i siti chiedono una registrazione (https://newsapi.org/)  e fanno pagare un abbonamento, ma altri possono essere gratuiti : https://apilist.fun/ ; https://any-api.com/ .

Se il tuo Browser non ha la funzione JSON, per una migliore lettura consiglio il sito https://jsonformatter.org/

Lists Blocks VS Dictionaries

Al contrario delle Liste che hanno il blocco AddItemsToList , nei Dizionari l’origine dei dati non può essere un inserimento dell’utente ad esempio da una casella di testo, bensì è un file JSON. Quindi, per sviluppare un meccanismo di acquisizione, bisogna interpretare quali sono i nomi delle Key e in che profondità sono posizionati.

Nella figura precedente vediamo che il dizionario articles ha le seguenti Key:

  1. source
  2. author
  3. title
  4. description
  5. url
  6. urlToImage
  7. publishedAt
  8. content

e per localizzarli bisogna utilizzare il blocco WalkAllAtLevel.