Loading AI tools
formato adatto per lo scambio dei dati in applicazioni client-server Da Wikipedia, l'enciclopedia libera
JavaScript Object Notation (JSON ˈdʒeɪ·sən[1]) è un formato per lo scambio dati basato sul linguaggio di programmazione JavaScript (ECMA-262).[2]
JavaScript Object Notation | |
---|---|
Estensione | .json
|
Tipo MIME | application/json
|
Uniform Type Identifier (UTI) | public.json
|
Type code (Mac OS) | TEXT
|
Tipo | Electronic Data Interchange |
Estensione di | JavaScript |
Standard | STD 90 (RFC 8259), ECMA-404, ISO/IEC 21778:2017 |
Formato aperto? | Sì |
Sito web | json.org |
È utilizzato in programmazione web come alternativa al formato XML.[3]
Originariamente descritto nella RFC 4627[4], è diventato uno standard ECMA nel 2013 come ECMA-404[5].[6] Nel 2017 è stata pubblicata una seconda edizione del formato che costituisce la base dello standard ISO/IEC 21778.[7][8]
La semplicità di JSON 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()
.[9] 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:
true
e false
);"
);[]
);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
.[10]
Fra i primi utilizzatori di JSON si trova Yahoo!, dal 2005.[11]
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[12], per cui è compito del programmatore adottare convenzioni appropriate (es. Base64) per convertire i dati binari in forma testuale.
Alcune delle limitazioni di JSON sono coperte da YAML.[senza fonte]
Il seguente esempio rappresenta i dati di un'ipotetica persona in formato JSON:
{
"name": "Mario",
"surname": "Rossi",
"active": true,
"favouriteNumber": 54,
"birthday": {
"day": 1,
"month": 1,
"year": 2000
},
"languages": [ "it", "en" ]
}
Segue un semplice esempio di richiesta AJAX in JavaScript, ad un URL che risponda con dati JSON.[13]
var httpRequest = new XMLHttpRequest();
// callback
httpRequest.addEventListener( 'load', function () {
// parsificazione della risposta (si presume sia in formato JSON)
var data = JSON.parse( this.responseText );
// fare qualcosa con i dati
console.log( data );
} );
// inizializzazione ed invio
httpRequest.open( 'GET', 'https://it.wikipedia.org/w/api.php?action=query&prop=info&titles=Pagina+principale&format=json' );
httpRequest.send();
Applicazioni Mobili
Per far comunicare il back-end all'applicazione mobile è possibile inviare i dati attraverso il protocollo HTTP in formato JSON[14].
Tra i browser senza il supporto a JSON.parse()
si citano alcune versioni, principalmente precedenti al 2009, in ordine alfabetico:[15]
Un gran numero di librerie semplificarono l'utilizzo del formato JSON per effettuare richieste Ajax. Si citano JQuery ed AngularJS.[16][17]
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à.[9]
Si cita il supporto a XMLHttpRequest in ordine cronologico:[18]
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">
.[non chiaro] Questi approcci erano largamente usati prima dell'ampio supporto dell'oggetto XMLHTTPRequest.
Anche il tag <script>
può essere usato per ottenere dati JSON.[non chiaro] Questo permette di superare alcune limitazioni che sorgono con l'utilizzo di XMLHTTPRequest ma a discapito della sicurezza.[19]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.