JSON: cos’è, come si usa e con quali tool

JSON (JavaScript Object Notation) ha ormai eclissato XML come formato di scambio di dati preferito per applicazioni web e servizi web. Ecco come ci è riuscito.

json

JavaScript Object Notation (JSON) è una rappresentazione testuale e priva di schemi di dati strutturati basata su elenchi ordinati. Sebbene JSON sia derivato da JavaScript, è supportato in modo nativo o tramite librerie nella maggior parte dei linguaggi di programmazione. JSON è comunemente, ma non esclusivamente, utilizzato per scambiare informazioni tra client web e server web.

Negli ultimi 15 anni JSON è diventato onnipresente sul web. Oggi è il formato prescelto per quasi tutti i servizi web disponibili al pubblico e viene spesso utilizzato anche per i servizi web privati. La popolarità di JSON ha portato anche al supporto nativo di JSON da parte di molti database. I database relazionali come PostgreSQL e MySQL ora vengono forniti con supporto nativo per l’archiviazione e l’interrogazione dei dati JSON. Anche i database NoSQL come MongoDB e Neo4j supportano JSON, sebbene MongoDB utilizzi una versione binaria leggermente modificata di JSON.

In questo articolo daremo una rapida occhiata a JSON e discuteremo i suoi vantaggi rispetto a XML, i suoi svantaggi, quando dovreste usarlo e quando dovreste considerare le alternative. Ma prima, tuffiamoci nell’aspetto pratico di JSON.

Esempio di JSON

adv
Cloud Communication Business

Nell’era digitale il centralino va in Cloud

La telefonia di nuova generazione è in software-as-a-service: non richiede di installare centralini hardware, gestisce fisso e mobile, e consente di attivare nuove linee o filiali con un clic, abilitando Smart Working e Unified Communication. SCOPRI DI PIÙ >>

Ecco un esempio di dati codificati in JSON

La struttura definisce chiaramente alcuni attributi di una persona. Include un nome e un cognome, il numero di volte in cui la persona ha effettuato l’accesso, se si tratta di uno scrittore, un elenco di aziende con cui lavora e un elenco dei suoi animali domestici (solo uno in questo caso). Una struttura come quella descritta qui sopra può essere passata da un server a un browser web o a un’applicazione mobile, che eseguirà quindi alcune azioni come la visualizzazione dei dati o il salvataggio per futuri riferimenti.

JSON è un formato di dati generico con un numero minimo di tipi di valore: stringhe, numeri, elenchi, oggetti e null. Sebbene la notazione sia un sottoinsieme di JavaScript, questi tipi sono rappresentati in tutti i linguaggi di programmazione comuni, rendendo JSON un buon candidato per trasmettere dati attraverso lacune “linguistiche”.

File JSON

I dati JSON sono archiviati in file che terminano con l’estensione .json. Questi sono file di testo semplice e possono essere facilmente aperti ed esaminati. Come spiega il blog SQLizer, questa è anche una chiave per la più ampia interoperabilità di JSON, poiché quasi tutti i linguaggi di programmazione che potete nominare possono leggere ed elaborare file di testo semplice e sono facili da inviare su Internet.

Perché dovreste usare JSON?

Per comprendere l’utilità e l’importanza di JSON, dovremmo prima capire un po’ la storia dell’interattività sul web, che all’inizio degli anni 2000 ha iniziato a trasformarsi. A quel tempo il browser serviva principalmente come client per visualizzare informazioni e il server faceva tutto il lavoro sporco per preparare il contenuto per la visualizzazione. Quando un utente faceva clic su un link o un pulsante nel browser, una richiesta veniva inviata al server, il server preparava le informazioni necessarie in HTML e il browser renderizzava l’HTML come una nuova pagina. Questo modello era lento e inefficiente, richiedendo al browser di eseguire nuovamente il rendering di tutto sulla pagina anche se cambiava solo una sua sezione.

Gli sviluppatori web hanno così cercato nuove tecnologie per migliorare l’esperienza utente complessiva. Nel frattempo, la capacità di effettuare richieste web in background mentre veniva mostrata una pagina, che era stata recentemente introdotta in Internet Explorer 5, si stava dimostrando un approccio praticabile per caricare i dati in modo incrementale per la visualizzazione. Invece di ricaricare l’intero contenuto della pagina, facendo clic sul pulsante di aggiornamento si innescava una richiesta web che veniva caricata in background. Quando i contenuti venivano caricati, i dati potevano essere manipolati, salvati e visualizzati sulla pagina utilizzando JavaScript, il linguaggio di programmazione universale nei browser.

REST vs. SOAP: la connessione JSON

Inizialmente questi dati venivano trasferiti in formato XML usando un protocollo di messaggistica chiamato SOAP (Simple Object Access Protocol). Ma XML era difficile da gestire in JavaScript. JavaScript aveva già degli oggetti, che sono un modo per esprimere i dati all’interno del linguaggio, e quindi Douglas Crockford prese un sottoinsieme di quell’espressione come specifica per un nuovo formato di scambio di dati e lo soprannominò JSON. JSON era molto più facile da leggere per le persone e da analizzare per i browser.

Nel corso degli anni 2000 un’altra tecnologia di servizi web, denominata Representational State Transfer o REST, ha iniziato a sorpassare SOAP allo scopo di trasferire dati. Uno dei grandi vantaggi della programmazione mediante le API REST è che potete utilizzare più formati di dati, non solo XML, ma anche JSON e HTML. Quando gli sviluppatori web hanno preferito JSON rispetto a XML, hanno preferito anche REST a SOAP. Come ha scritto Kostyantyn Kharchenko sul blog Svitla, “In molti modi il successo di REST è dovuto al formato JSON grazie al suo facile utilizzo su varie piattaforme”. Oggi JSON è lo standard di fatto per lo scambio di dati tra client web e mobile e servizi di back-end.

JSON vs. XML

Come appena detto, la principale alternativa a JSON è XML. Tuttavia, XML sta diventando sempre meno comune nei nuovi sistemi ed è facile capirne il perché. Di seguito ecco una versione del codice mostrato prima, questa volta in XML.

Oltre ad essere più “verboso” (in questo caso esattamente il doppio del codice in JSON), XML introduce anche alcune ambiguità quando analizza una struttura di dati compatibile con JavaScript. La conversione di XML in un oggetto JavaScript può richiedere da decine a centinaia di righe di codice e alla fine richiede una personalizzazione basata sull’oggetto specifico da analizzare. La conversione di JSON in un oggetto JavaScript richiede invece una riga di codice e non richiede alcuna conoscenza preliminare dell’oggetto da analizzare.

Limiti di JSON

Sebbene JSON sia un formato dati relativamente conciso e flessibile con cui è facile lavorare in molti linguaggi di programmazione, ci sono alcuni svantaggi da sottolineare. Ecco i cinque principali.

  • Nessuno schema: da un lato, ciò significa che avete la totale flessibilità per rappresentare i dati nel modo che desiderate. Dall’altro lato però significa che potreste accidentalmente creare dati “deformati” molto facilmente
  • Solo un tipo di numero: questo limite significa semplicemente che non potete sfruttare i diversi e variegati tipi di numeri disponibili in molti linguaggi di programmazione.
  • Nessun tipo di data: questa omissione significa che gli sviluppatori devono ricorrere all’uso di rappresentazioni di stringhe di date, con conseguenti discrepanze di formattazione, o devono rappresentare le date sotto forma di millisecondi dall’epoca (1 gennaio 1970)
  • Nessun commento: ciò rende impossibile annotare i campi in linea, richiedendo ulteriore documentazione e aumentando la probabilità di incomprensioni
  • Verbosità: sebbene JSON sia meno dettagliato di XML, non è il formato di scambio di dati più conciso. Per servizi ad alto volume o per scopi speciali, vi consigliamo di utilizzare formati di dati più efficienti

Quando dovreste usare JSON?

Se state scrivendo un software che comunica con un browser o un’applicazione mobile nativa, dovreste utilizzare JSON come formato dei dati. L’utilizzo di un formato come XML è una scelta obsoleta, nonché un probabile ostacolo per i talenti che vorreste attirare.

Nel caso della comunicazione da server a server, potreste trovarvi meglio usando un framework di serializzazione come Apache Avro o Apache Thrift. JSON non è una cattiva scelta in questo ambito e potrebbe essere esattamente ciò di cui avete bisogno, ma non aspettatevi la stessa “chiarezza” che avete di fronte quando si tratta di comunicazione web e mobile.

Se state utilizzando database NoSQL, siete praticamente costretti a usare tutto ciò che vi offre il database stesso. Nei database relazionali che supportano JSON, una buona regola empirica è quella di usarlo il meno possibile. I database relazionali sono stati ottimizzati per dati strutturati che si adattano a uno schema particolare. Mentre la maggior parte ora supporta dati più flessibili sotto forma di JSON, ci si può aspettare un impatto sulle prestazioni quando si esegue una query per le proprietà all’interno degli oggetti JSON.

JSON è invece il formato de facto per l’invio di dati tra server web, browser e applicazioni mobile. Il suo design lo rende semplice da leggere e comprendere e, nella maggior parte dei casi, anche facile da manipolare nel linguaggio di programmazione che preferite. La mancanza di uno schema rigoroso consente inoltre una notevole flessibilità, che però a volte rende difficile garantire la lettura e la scrittura corretta di JSON.

Parser JSON

La parte del codice di un’applicazione che trasforma i dati archiviati come JSON in un formato che l’applicazione può utilizzare è chiamata parser. JavaScript, come prevedibile, include un parser nativo, il metodo JSON.parse(). Potreste dover lavorare un po’ di più per utilizzare JSON in linguaggi come Scala o Elm, ma l’adozione diffusa di JSON significa che ci sono librerie e programmi di utilità per aiutarvi in tutti i task più difficili. Il sito web json.org include un elenco completo di librerie di codici che è possibile utilizzare per analizzare, generare e manipolare JSON in linguaggi diversi come Python, C # e COBOL.

Utility per JSON

Se state cercando di manipolare o esaminare direttamente i dati codificati in JSON, senza scrivere voi stessi il codice, ci sono alcune utility online che possono aiutarvi.

  • JSON Formatter: JSONLint formatterà e convaliderà il codice JSON arbitrario
  • JSON Viewer: Stack.hu ha un sito che creerà un albero interattivo per aiutarvi a comprendere la struttura del vostro codice JSON
  • JSON Converter: dovete spostare rapidamente i dati da un formato JSON a qualcos’altro? Convertcsv.com dispone di strumenti che possono convertire JSON in CSV (che può quindi essere aperto in Excel) o XML.

Tutorial JSON

Siete pronti per saperne di più su come lavorare con JSON nelle vostre applicazioni interattive? Mozilla Developer Network ha un ottimo tutorial per iniziare a conoscere JSON e JavaScript. Se poi siete pronti per passare ad altri linguaggi di programmazione, consultate il tutorial sull’uso di JSON con Java (Baeldung), con Python (DataCamp) o con C# (Software Testing Help). In bocca al lupo!