elaborazioneJsonClient

gestire una risposta in formato application/json via JavaScript

Come linguaggio lato client prendiamo in considerazione soltanto JavaScript in cui la gestione dei messaggi JSON è davvero semplice ma praticamente per tutti i linguaggi esistono librerie per fare le cose che vediamo qui sotto.

Il nome stesso del formato (JavaScript Object Notation) ci da indicazioni sulla sua semplicità di uso con JavaScript che ci mette a disposizione un oggetto predefinito JSON per trasformare un testo JSON in un oggetto e viceversa.

JSON → oggetto JS

Per convertire una stringa in un oggetto basta usare il metodo parse() dell'oggetto JSON, JSON.parse(testo) restituisce un oggetto costruito come specificato nella stringa testo.

Normalmente il messaggio JSON viene da un server o da un sistema di archiviazione ma nella sostanza il modo di lavorarci è quello qui sotto:

// invento un messaggio let messaggioDalServer = '{ "nome":"Pluto", "telefoni": ["555-1111","555-2222"] }'; // trasformo il testo in un oggetto let oggetto = JSON.parse(messaggioDalServer); console.log(oggetto.telefoni[1]);

Cosa stampa il precedente frammento di programma nella console?

Pluto 555-2222no, il nome non viene stampatohernet 555-1111questo sarebbe l'indice zero 555-2222

Cosa stampa il precedente frammento di programma nella console?

nomeno, la proprietà "Pluto" non esiste stringa vuotano, c'è un valore specifico undefined

Oggetto JS → JSON

Anche in questo caso piuttosto facile: JSON.stringify(oggetto) restituisce una stringa che è la rappresentazione delle proprietà di oggetto. Vediamo subito come funziona con un frammento di programma

let oggetto = {nome: "Batman"}; oggetto.citta = "Gotham"; oggetto.attori = ["Christian Bale","Val Kilmer"]; let testo = JSON.stringify(oggetto);

la variabile testo conterrà:

{
  "nome": "Batman",
  "citta": "Gotham",
  "attori": [
    "Christian Bale",
    "Val Kilmer"
  ]
}

In effetto il frammento di programma sopra si potrebbe anche scrivere:

let oggetto = {nome: "Batman", citta: "Gotham", attori : ["Christian Bale","Val Kilmer"]}; let testo = JSON.stringify(oggetto);