Parsing JSON

Parsing JSON

Nella precedente lezione abbiamo accennato il parsing JSON e abbiamo già detto che JSON è un formato testuale indipendente dal linguaggio utilizzato e anche molto semplice da capire.

Quasi tutti i browser ormai offrono un oggetto JSON nativo, può succedere però che, se si utilizzano alcune versioni di browser molto vecchie, non si disponga di questo oggetto. In tal caso occorre lavorare in un altro modo. Ma c’è da dire che oggi è un’eventualità molto remota.

Affrontiamo nel dettaglio il parsing JSON, comparando il formato testuale di JSON con gli oggetti in JavaScript.

I dati in JSON, così come gli oggetti in JavaScript, sono rappresentati da una coppia chiave: valore, dove il carattere due punti ( : ) funge da operatore di assegnazione.

Infatti ricordiamo che in JavaScript abbiamo scritto i nostri oggetti in questo modo:

var persona = {nome:'Coding',cognome:'Creativo',anni:30};

Come ho spiegato in questa lezione: creare un oggetto in JavaScript.

In JSON sono necessarie le virgolette sia per la chiave, sia per il valore.

Dunque dovrei scrivere:

var persona = '{"nome":"Coding","cognome":"Creativo","anni":30}';

Inoltre, così come per gli oggetti in JavaScript, JSON permette di utilizzare la struttura dati array.

Parsing JSON

var oggettoPersona = JSON.parse(persona);

console.log(oggettoPersona);

Facendo il console.log otteniamo la conversione in oggetto JavaScript.

Array di valori con JSON

Facciamo dunque un altro esempio creando un oggetto persone che contiene delle chiavi persona1, persona2 alle quali è assegnato un valore di tipo array. Ciascun array contiene poi un oggetto con altre coppie chiave:valore.
Ecco di seguito il nostro esempio:

var persone = `
{
  "persona1": [
    {
    "nome":"Coding",
    "cognome":"Creativo",
    "anni":30
    }
  ],
  "persona2": [
    {
    "nome":"Coding",
    "cognome":"Creativo",
    "anni":30
    }
  ]
  }`;

Se poi, in JavaScript, facciamo un semplice console.log, dell’oggetto persone, otteniamo una stringa, come da figura sotto:

console.log(persone);
json javascript

Parsing JSON

Adesso facciamo il nostro parsing JSON, utilizzando il metodo JSON.parse.

var oggettoPersone = JSON.parse(persone);

Facciamo poi il console.log per vedere il nostro risultato:

Adesso otteniamo un oggetto che contiene coppie chiavi: valore dove il valore è un array, come si vede nella figura sotto.

coppie chiave valore json

Alcuni link utili

Indice tutorial JavaScript

Le funzioni di callback

Esempi funzioni di callback

Come utilizzare le callback e setTimeout

Cifrario di Cesare online

Come realizzare un convertitore da decimale a binario, ottale ed esadecimale

Come creare PDF con JavaScript

PDF da un form con JavaScript

Proprietà di un PDF con JavaScript

Libreria jsPDF

JSON stringify

JSON stringify

JSON stringify è un metodo che serve a convertire un oggetto o un valore JavaScript in una stringa JSON.

Abbiamo già detto che il formato JSON è utilizzato per lo scambio di informazioni da o verso un server web.

Nella lezione precedente abbiamo visto il funzionamento del metodo JSON.parse per fare esattamente l’opposto di quanto vedremo in questa lezione. Questo metodo serve infatti a prendere un dato da un server web e renderlo utilizzabile lato JavaScript.

In questa lezione studieremo invece come inviare dati ad un server web, ad esempio convertendo un oggetto esistente. Per ottenere questo servirà il metodo JSON.stringify.

Sintassi di JSON stringify

La sintassi di questo metodo è la seguente:

JSON.stringify(valore[,replacer[,space]]);

Dove valore rappresenta l’oggetto da convertire in stringa, mentre replacer è un parametro opzionale che rappresenta una funzione oppure un array che consente di modificare le proprietà dell’oggetto da convertire.

Infine space è utilizzato per inserire ad esempio uno spazio bianco nella stringa JSON e dunque rendere l’output più leggibile.

Esempio di JSON stringify

Prendiamo come esempio l’oggetto JavaScript automobile e lo visualizziamo attraverso il console.log.

var automobile = {
    marca: 'Fiat',
    modello: '500',
    colore: 'bianco',
    alimentazione: 'benzina',
    anno: 2010,
    cavalli: 69
};
console.log(automobile);

Richiamiamo poi il metodo stringify sull’oggetto creato.

var stringaJson = JSON.stringify(automobile);
console.log(stringaJson);

In questo modo abbiamo ottenuto una conversione dell’oggetto a stringa, come possiamo vedere nella nostra console:

convertire in stringa json

Esempio con i parametri opzionali di JSON stringify

Così come abbiamo visto nell’esempio presentato nella scorsa lezione, nel quale aggiungevamo all’oggetto degli elementi attraverso una funzione, anche nel nostro caso possiamo modificare il nostro oggetto prima di convertirlo in stringa.

Dunque di seguito il codice:

var elementi = {
  A : "Coding",
  B: "Creativo"
};

var oggettoElemento = JSON.stringify(elementi, function (key, value) {
      if(key == "A")
          return "Coding Creativo";
      return value;
  });

  console.log(oggettoElemento);

Infine per creare lo spazio e aumentare la leggibilità della stringa JSON, aggiungiamo uno spazio vuoto. Dunque basta scrivere in questo modo:

var oggettoElemento = JSON.stringify(elementi, function (key, value) {
      if(key == "A")
          return "Coding Creativo";
      return value;
  }, ' ');

Ecco in figura l’output prodotto:

stringify json

In questa lezione abbiamo visto il metodo JSON stringify, nelle prossime vedremo altri esempi.

Alcuni link utili

Indice tutorial JavaScript

Le funzioni di callback

Esempi funzioni di callback

Come utilizzare le callback e setTimeout

Cifrario di Cesare online

Come realizzare un convertitore da decimale a binario, ottale ed esadecimale

Come creare PDF con JavaScript

PDF da un form con JavaScript

JSON parse

JSON parse

Il metodo JSON.parse serve ad analizzare il formato testuale (stringa) di JSON e a costruire il valore JavaScript o l’oggetto. Il valore di ritorno è dunque l’oggetto che corrisponde al parametro stringa passato.

Si dice anche che è un metodo per la de-serializzazione.

Se la stringa JSON non è valida genera un’eccezione di tipo SyntaxError, come si vede nella figura sotto:

eccezione SyntaxError

Sintassi JSON parse

La sintassi di questo metodo è la seguente:

JSON.parse(stringa[, reviver])

Dove stringa rappresenta la stringa JSON da analizzare, mentre reviver è un parametro opzionale e permette di indicare come verrà convertito il valore.

Primo esempio JSON parse

Supponiamo ad esempio di avere questa stringa JSON, rappresentata semplicemente da una coppia chiave:valore.

Facciamo poi il console.log del tipo di dato che restituisce.

var persona = '{"nome": "Coding Creativo"}';
console.log(typeof(persona));

Nella nostra console noteremo che verrà visualizzato il tipo di dato string.

Adesso proviamo a fare il parse e poi nuovamente il console.log del tipo di dato, in questo modo:

persona = JSON.parse(persona);
console.log(typeof(persona));

Se adesso andiamo a guardare nella nostra console, abbiamo un oggetto:

console JavaScript

Potevamo scrivere tutto in un unico passaggio, in questo modo:

console.log(typeof(JSON.parse('{"nome": "Coding Creativo"}')));

Esempi JSON parse

Facciamo adesso altri semplici esempi.

Nel primo esempio facciamo il parsing di una stringa e come tipo di dato JavaScript otteniamo una stringa.

console.log(JSON.parse('"Coding"'));
console.log(typeof(JSON.parse('"Coding"')));

Nel secondo caso facciamo il parsing di un numero e dunque questa volta otteniamo come tipo di dato un numero.

console.log(JSON.parse('13'));
console.log(typeof(JSON.parse('13')));

Infine facciamo il parsing di un array, ma questa volta come tipo di dato ottengo un oggetto.

console.log(JSON.parse('["Coding", "Creativo"]'));
console.log(typeof(JSON.parse('["Coding", "Creativo"]')));

Ecco la figura che rappresenta tutte e tre le nostre situazioni:

json parse esempi

Quindi come abbiamo notato nei primi due casi, dopo aver fatto il parsing, non otteniamo un oggetto, ma difficilmente troveremo un formato JSON che corrisponde ad una sola stringa oppure ad un numero.

Allo stesso modo posso usare anche i valori booleani.

console.log(JSON.parse('true'));
console.log(typeof(JSON.parse('true')));

Secondo esempio

Riprendiamo adesso l’esempio visto nella lezione precedente. Dunque il seguente formato JSON:

var automobile = `{"marca":"Fiat",
  "modello":"500",
  "colore":"bianco",
  "alimentazione":"benzina",
  "anno":"2010"   
}`;

Quindi adesso lo dobbiamo convertire in oggetto JavaScript. Per farlo utilizziamo il metodo JSON.parse sull’oggetto automobile creato. Dunque scriviamo:

var oggettoAutomobile = JSON.parse(automobile);

console.log(oggettoAutomobile);

Se visualizziamo la nostra console vedremo il nostro oggetto automobile.

Inoltre, dato che è un oggetto, possiamo richiamare le proprietà in questo modo:

console.log(oggettoAutomobile.marca);

Parametro opzionale reviver di JSON parse

Facciamo adesso un esempio di utilizzo del parametro opzionale reviver.

Costruiamo un semplice JSON che contiene due coppie chiave-valore come nel codice sotto:

var elementi = '{"A": "Coding", "B": "Creativo"}';

Poi utilizziamo il metodo parse per convertire la stringa in oggetto e una funzione che prende i valori della chiave A e li sostituisce con quanto indicato nel return.

var oggettoElemento = JSON.parse(elementi, function (key, value) {
      if(key == "A")
          return "Coding Creativo";
      return value;
  });

In questa lezione abbiamo effettuato alcuni esempi con il metodo JSON.parse, nella prossima lezione continueremo ad approfondire questo metodo, prima di passare ad altri metodi.

Alcuni link utili

Indice tutorial JavaScript

Le funzioni di callback

Esempi funzioni di callback

Come utilizzare le callback e setTimeout

Cifrario di Cesare online

Come realizzare un convertitore da decimale a binario, ottale ed esadecimale

Come creare PDF con JavaScript

PDF da un form con JavaScript

Proprietà di un PDF con JavaScript

Libreria jsPDF

JSON

JSON

JSON è un formato utilizzato per lo scambio dei dati ed è l’acronimo di JavaScript Object Notation.

È basato sul linguaggio JavaScript e viene utilizzato molto per la programmazione asincrona, dunque con ajax, come vedremo nelle prossime lezioni.

JSON è un formato testuale, quindi è una stringa. Permette di aggregare i dati e segue la sintassi degli oggetti JavaScript.

Ma può essere utilizzato indipendentemente da JavaScript, infatti molti linguaggi di programmazione lo utilizzano e dunque consentono anche di fare il parse.

Un oggetto JSON si crea utilizzando una coppia di parentesi graffe che servono a contenere tutto l’oggetto. Dopo, all’interno di queste parentesi, si inseriscono le varie proprietà indicando delle coppie chiave-valore e facendo attenzione ad usare le doppie virgolette sia per la chiave sia per il valore. Ogni proprietà dell’oggetto è separata da una virgola.

Ecco un esempio di formato JSON:



{
  "type":"Fiat",
  "model":"500",
  "color":"white",
  "powerSupply":"gas",
  "year":"2010"   
}

I dati json sono descritti come coppie chiave-valore, in questo esempio abbiamo un oggetto auto con alcune proprietà, come ad esempio: tyoe, model, color, ecc.

L’oggetto JSON può essere ancora più complesso, come ad esempio questa API:

JSON e JavaScript

Facciamo un esempio di utilizzo di JSON con JavaScript. Prendiamo dunque il nostro solito oggetto auto e lo scriviamo come un oggetto JSON, ricordando che è una stringa.

Dato che è una stringa possiamo utilizzare il semplice apice o il doppio apice, senza andare a capo. Oppure si può utilizzare il backtick (`) cioè l’apice retro-verso. Per ottenere l’apice retro-verso basta tenere premuto il tasto ALT e contemporaneamente sul tastierino numerico i numeri 0096.

Vediamo dunque un oggetto JSON scritto utilizzando i backtick:



var automobile = `{"marca":"Fiat",
  "modello":"500",
  "colore":"bianco",
  "alimentazione":"benzina",
  "anno":"2010"   
}`;

e senza:



var automobile = '{
   "marca":"Fiat",
   "modello":"500",
   "colore":"bianco",
   "alimentazione":"benzina",
   "anno":"2010"
}';

O ancora in alternativa è possibile unire le stringhe con l’operatore +, come da esempio sotto:



var automobile = '{'
  + '"marca":"Fiat",'
  + '"modello":"500",'
  + '"colore":"bianco",'
  + '"alimentazione":"benzina",'
  + '"anno":"2010"'+
'}';

Se proviamo a fare il console.log noteremo che quello che abbiamo scritto non è un oggetto bensì una stringa.

console.log(automobile);

Nella prossima lezione vedremo come fare il parse del seguente codice in modo da convertirlo in oggetto JavaScript.

Per maggiori approfondimenti sul formato JSON, potete consultare il sito di riferimento: http://json.org/example.html.

Alcuni link utili

Indice tutorial JavaScript

Le funzioni di callback

Esempi funzioni di callback

Come utilizzare le callback e setTimeout

Cifrario di Cesare online

Come realizzare un convertitore da decimale a binario, ottale ed esadecimale

Come creare PDF con JavaScript

PDF da un form con JavaScript

Proprietà di un PDF con JavaScript

Libreria jsPDF

reverse JavaScript

reverse JavaScript

In questa lezione studieremo il metodo reverse di JavaScript, utile per invertire gli elementi di un array.

La sintassi è la seguente: nomeArray.reverse().

Facciamo quindi degli esempi per capirne il funzionamento.

reverse JavaScript – primo esempio

Invertire l’ordine di un array di stringhe preso in input, utilizzando il metodo reverse().

Prendiamo quindi in input il nostro array, ad esempio un array composto da oggetti scolastici come il seguente:

var oggettiScolastici = ['gomma', 'quaderno', 'matita'];

Dopo utilizziamo semplicemente il metodo reverse sull’array dato, seguendo la sua sintassi e visualizziamo il risultato nella console del browser.

Ecco il codice di esempio d’utilizzo del metodo reverse() di JavaScript:

oggettiScolastici.reverse();
console.log(oggettiScolastici);

In questo modo nella console vedremo in ordine inverso il contenuto dell’array di partenza.

reverse JavaScript – secondo esempio

Ordinare un array di numeri e dopo invertirlo utilizzando il metodo reverse().

Quindi questa volta prendiamo in input un array di numeri, come da esempio sotto:

var numeri = [5,4,3,2,6,9,62];

Ricordiamo anche che per poter effettuare un ordinamento numerico di un array dobbiamo utilizzare la sintassi nomeArray.sort(funzione di confronto), come spiegato in questa lezione: sort javascript.

Quindi lo ordiniamo seguendo le specifiche indicate nella precedente lezione:

numeri.sort(function(a, b) {
  return a - b;
});

Infine applichiamo il metodo reverse di JavaScript e visualizziamo il risultato, per comodità, nella console del nostro browser.

numeri.reverse();
console.log(numeri);

Se riflettiamo in questo caso si poteva ottenere lo stesso risultato semplicemente effettuando un ordinamento decrescente dell’array di partenza.

Di seguito vi presento quindi una possibile soluzione alternativa all’algoritmo proposto che non utilizza il metodo reverse di JavaScript.

var numeri = [5,4,3,2,6,9,62];

numeri.sort(function(a, b) {
  return b - a;
});

console.log(numeri);

In questa lezione abbiamo semplicemente visto dei semplicissimi esempi d’utilizzo del metodo reverse di JavaScript. Nelle prossime lezioni affronteremo ancora altri metodi, attraverso lo studio di esempi pratici.

Alcuni link utili

Indice tutorial JavaScript

Introduzione al tutorial JavaScript

Il linguaggio JavaScript

Come utilizzare JavaScript alert

Come utilizzare JavaScript confirm

Utilizzare JavaScript prompt

Variabili in JavaScript

JavaScript substring

Gioco indovina numero in JavaScript

Gioco della morra cinese in JavaScript

Semplice quiz utilizzando gli array

Come realizzare il gioco dei dadi online