JSON

Da Wikipedia, l'enciclopedia libera.

Stub Questa voce di informatica è solo un abbozzo: contribuisci a migliorarla secondo le convenzioni di Wikipedia.

Acronimo di JavaScript Object Notation, il JSON è un formato adatto per lo scambio dei dati in applicazioni client-server.

È basato sul linguaggio JavaScript Standard ECMA-262 3a edizione Dicembre 1999, ma ne è indipendente. Viene usato in AJAX come alternativa a XML/XSLT.

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 eseguirne il parsing tramite una semplice chiamata alla funzione eval(). Questo fatto 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, reali, 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 molto progetti che permettono l'utilizzo di JSON con altri linguaggi quali, per esempio: ActionScript, C, C#, ColdFusion, Common Lisp, E, Erlang, Java, JavaScript, Lua, ML, Objective CAML, Perl, PHP, Python, Rebol e Ruby.

Da dicembre 2005 Yahoo! supporta JSON come alternativa per i suoi Web Services.

Indice

[modifica] Usare JSON

Leggere uno stream JSON da JavaScript è molto semplice come dimostra il seguente codice:

var the_object;
var http_request = new XMLHttpRequest();
http_request.open("GET", url, true);
http_request.onreadystatechange = function () {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            the_object = eval("(" + http_request.responseText + ")");
        } else {
            alert("There was a problem with the URL.");
        }
    }
    http_request = null;
};
http_request.send(null);

È da notare il fatto che l'uso di XMLHttpRequest in questo esempio non è compatibile con tutti i browser. Infatti ci sono piccole differenze sintattiche tra Internet Explorer, Opera, Safari e Mozilla.

Ci sono altri modi 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 limitazione che sorgono con l'utilizzo di XMLHTTPRequest ma a discapito della sicurezza. Su JSONRequest si può trovare un'interessante e più sicura alternativa.

[modifica] Un esempio di JSON

Il seguente esempio è un semplice menù.

{
    "type": "menu",
    "value": "File",
    "items": [
        {"value": "New", "action": "CreateNewDoc"},
        {"value": "Open", "action": "OpenDoc"},
        {"value": "Close", "action": "CloseDoc"}
    ]
}

[modifica] Confronto con XML e altri linguaggi di markup

XML è un linguaggio di marcatura dalle proprietà mentre JSON non lo è: JSON è un formato di interscambio di dati. Entrambi non hanno un sistema di rappresentazione dei dati binari, per cui è compito del programmatore adottare delle convenzioni appropriate (es. Base64) per convertire i dati binari in forma testuale.

Alcune delle limitazioni di JSON sono coperte da YAML. Nonostante una maggiore complessità, [1] YAML è considerato leggero rispetto a XML.

[modifica] Altri semplici linguaggi di markup

[modifica] Voci correlate

[modifica] Collegamenti esterni

Strumenti personali