JSON… e quella virgola di troppo

Da tanto tempo si è affermato ormai JSON come formato per la trasmissione di dati perchè ritenuto più performante di XML.

Ormai quasi tutti i servizi Web 2.0 rispondono a delle richieste con dei buffer in formato JSON. Grazie al massivo uso di AJAX dell’oggetto XMLHttpRequest incentivato dall’adozione dei diversi framework di sviluppo JavaScript, JSON è diventato un formato di interscambio anche da e verso linguaggi che non ne hanno avuto necessità fino ad oggi (Si veda sul sito http://json.org le librerie prodotte per i vari linguaggi di programmazione).

Utilizzando JSON spesso si incorre in un comportamento diverso tra i vari browser.

Non si comportano diversamente nel trattare un oggetto, un array o una stringa, ma si comportano diversamente in uno specifico caso… Quale?

Prendiamo il JSON che segue:

var myJSONObject = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3',
};
alert(myJSONObject.key1);

Provando ad includere il codice sopra citato in una pagina HTML in alcuni browser il risultato è un messaggio di alert con il che riporta il testo “value1”. Internet Explorer Altri browser invece danno un errore sulla riga precedente all’alert.

Il problema come descrive già il titolo di questo articolo è nella virgola successiva al valore della key3.

Secondo la mia interpretazione (ma potrei sbagliarmi, so di non sapere  :-) ) è giusto che non dia errore in quanto la virgola è inteso come separatore di valori e potrei avere (o volere) un ultimo elemento vuoto nell’oggetto.

Io non ho trovato risposta a questo dilemma, neanche le RFC fanno riferimento a questo caso “anomalo”. Chi è che si comporta bene secondo voi?


Pubblicato

in

da

Commenti

Una risposta a “JSON… e quella virgola di troppo”

  1. Avatar Gabriele Romanato

    E’ un errore. In fondo JSON non è altro che un object literal e quindi segue le stesse regole degli altri object literals. Caso analogo in PHP: un array con una virgola di troppo alla fine. non solleva errori ma lo script non funziona. diciamo che è un errore più logico che di parsing. :-)

%d blogger hanno fatto clic su Mi Piace per questo: