JavaScript Object Notation

JavaScript Object Notation (JSON ˈdʒeɪ·sən) è un formato per lo scambio dati basato sul linguaggio di programmazione JavaScript (ECMA-262).

JavaScript Object Notation (JSON ˈdʒeɪ·sən) è un formato per lo scambio dati basato sul linguaggio di programmazione JavaScript (ECMA-262).

È utilizzato in programmazione web come alternativa al formato XML.

Originariamente descritto nella RFC 4627, è diventato uno standard ECMA nel 2013 come ECMA-404. Nel 2017 è stata pubblicata una seconda edizione del formato che costituisce la base dello standard ISO/IEC 21778.

Caratteristiche

La semplicità di JSON format ne ha decretato un rapido utilizzo specialmente nella programmazione in AJAX. Il suo uso tramite JavaScript è particolarmente semplice, infatti l'interprete è in grado di eseguire il parsing di una stringa che ne rappresenti un valido contenuto tramite la funzione JSON.parse(). Questo lo ha reso velocemente molto popolare a causa della diffusione della programmazione in JavaScript nel mondo del Web.

I tipi di dati supportati da questo formato sono:

booleani (true e false);

interi, numeri in virgola mobile;

stringhe racchiuse da doppi apici (");

array (sequenze ordinate di valori, separati da virgole e racchiusi in parentesi quadre []);

array associativi (sequenze coppie chiave-valore separate da virgole racchiuse in parentesi graffe);

null.

La maggior parte dei linguaggi di programmazione possiede un typesystem molto simile a quello definito da JSON per cui sono nati molti progetti che permettono l'utilizzo di JSON con altri linguaggi quali, per esempio: ActionScript, C, C#, Adobe ColdFusion, Common LISP, Delphi, E, Erlang, Java, JavaScript, Lua, ML, Objective Caml, Perl, PHP, Python, REBOL, Ruby e Rust.

Uno stream JSON dovrebbe avere un'intestazione HTTP Content-Type: application/json.

Fra i primi utilizzatori di JSON si trova Yahoo!, dal 2005.

Relazione con altri linguaggi di markup

Il JSON è un formato di interscambio di dati, ed è spesso comparato con l'XML che però è un linguaggio di markup. Entrambi non hanno un sistema di rappresentazione dei dati binari, per cui è compito del programmatore adottare convenzioni appropriate (per esempio Base64) per convertire i dati binari in forma testuale.

Alcune delle limitazioni di JSON sono coperte da YAML.

Formato

Il seguente esempio rappresenta i dati di un'ipotetica persona in formato JSON:

In JavaScript

Segue un semplice esempio di richiesta AJAX in JavaScript, ad un URL che risponda con dati JSON.

Applicazioni Mobili

Per far comunicare il back-end all'applicazione mobile è possibile inviare i dati attraverso il protocollo HTTP in formato JSON.

In JavaScript

Tra i browser senza il supporto a JSON.parse() si citano alcune versioni, principalmente precedenti al 2009, in ordine alfabetico:

Internet Explorer precedente alla versione 8

Mozilla Firefox precedente alla versione 3.5

Safari precedente alla versione 4

Un gran numero di librerie semplificarono l'utilizzo del formato JSON per effettuare richieste Ajax. Si citano JQuery ed AngularJS.

Storicamente vi fu un'indiscriminata adozione del metodo eval() al posto di JSON.parse() dato che questi due metodi sono apparentemente interscambiabili. Il metodo eval() però non fornisce alcuna protezione da input arbitrario e può portare a serie vulnerabilità.

Si cita il supporto a XMLHttpRequest in ordine cronologico:

Mozilla Firefox 3.5 (2009)

Google Chrome 7 (2010)

Safari 5 (2010)

Internet Explorer 10 (2012)

Safari e Google Chrome per iOS 5.1 (2012)

Altre metodologie di supporto

Vi sono altri modi ormai obsoleti per ottenere stream JSON, per esempio l'uso dell'elemento <iframe> o di form come <form action="url_to_cgi_script" target="name_of_hidden_iframe">. Questi approcci erano largamente usati prima dell'ampio supporto dell'oggetto XMLHTTPRequest.

Anche il tag <script> può essere usato per ottenere dati JSON. Questo permette di superare alcune limitazioni che sorgono con l'utilizzo di XMLHTTPRequest ma a discapito della sicurezza.

Servizi correlati

Altre voci

C

CSS

Cascading Style Sheets, meglio noto come CSS (in italiano fogli di stile a cascata), è un linguaggio usato per definire la formattazione di documenti HTML, XHTML e XML, ad esempio i siti web e relative pagine web. Le regole per comporre il CSS sono contenute in un insieme di direttive…

Leggi la voce →
W

Web manager

Il web manager è il responsabile del coordinamento di un progetto web che può essere lo sviluppo di un semplice sito web statico o di una complessa applicazione per il web. Normalmente lavora in una web agency o in un'agenzia di comunicazione. Può, tuttavia, essere anche una figura professionale…

Leggi la voce →
ChatGPTC

ChatGPT

ChatGPT (acronimo di Chat Generative Pre-trained Transformer, lett. "trasformatore generativo pre-addestrato per chat") è un chat bot basato su intelligenza artificiale e apprendimento automatico, sviluppato dall'organizzazione di ricerca OpenAI.

Leggi la voce →
PhpBBP

PhpBB

phpBB è uno tra i più popolari sistemi liberi per la gestione di forum scritti mediante il linguaggio di programmazione PHP: il nome è un'abbreviazione di PHP Bulletin Board.

Leggi la voce →
T

TMZ (sito web)

TMZ è un sito web di gossip e notizie sullo spettacolo, lanciato l'8 novembre 2005. Nato come collaborazione tra America Online (AOL) e Telepictures Productions (divisione della Warner Bros.), è rimasto legato a tale gruppo societario fino a quando la Time Warner ha dismesso AOL nel 2009. Il 13…

Leggi la voce →
K

Kraken (sito web)

Kraken è un sito web statunitense per lo scambio di criptovalute operante in Canada, nell'Unione europea, in Giappone e negli Stati Uniti, "il più grande sito di scambio al mondo di Bitcoin in euro in termini di volume e liquidità". L'exchange fornisce scambi di criptovaluta in valuta fiat e…

Leggi la voce →