In primo luogo si dovrebbe sapere cosa JSON è:
- È lingua agnostico formato di scambio di dati.
La sintassi di JSON è stata ispirata dalla notazione JavaScript Object Literal, ma ci sono differenze tra di loro.
Per esempio, in JSON tutti chiavi deve essere quotato, mentre in letterali oggetto non è necessario:
// JSON:
{ "foo": "bar" }
// Object literal:
var o = { foo: "bar" };
Le virgolette sono obbligatorie in JSON, perché in JavaScript (più precisamente in 3 ° ECMAScript Edition.), l'utilizzo di parole riservate come nomi di proprietà non è consentita, ad esempio:
var o = { if: "foo" }; // SyntaxError in ES3
Mentre, utilizzando una stringa letterale come un nome di proprietà (citando il pro Nome perty) non dà problemi:
var o = { "if": "foo" };
Così per "compatibilità" (e facile eval'ing forse) le virgolette sono obbligatorie?.
I tipi di dati in JSON sono limitati ai seguenti valori:
string
number
object
array
- A letterale:
La grammatica di Strings
modifiche. Essi devono essere delimitati da virgolette doppie, mentre in JavaScript, è possibile utilizzare le virgolette singole o doppie in modo intercambiabile.
// Invalid JSON:
{ "foo": 'bar' }
La accettato JSON grammatica della Numbers
cambia anche, in JavaScript è possibile utilizzare esadecimali letterali, ad esempio 0xFF
, o (il famigerato) Octal letterali esempio 010
. In JSON puoi usare solo decimal letterali.
// Invalid JSON:
{ "foo": 0xFF }
ci sono alcune implementazioni buggy (Firefox 3.5+, IE8 +, json2.js), dove letterali ottale sono erroneamente ammessi, per esempio JSON.parse('01')
dovrebbe produrre un SyntaxError
.
Una domanda alla volta, per favore. –
possibile duplicato di [Qual è la differenza tra JSON e Object Literal Notation?] (Http://stackoverflow.com/questions/2904131/what-is-the-difference-between-json-and-object-literal- notation) – Teepeemm