Quali sono le differenze tra JSON e JavaScript oggetto? [duplicare]
-
09-10-2019 - |
Domanda
Questa domanda ha già una risposta qui:
Sono nuovo di JSON e JavaScript oggetti.
- Qualcuno può spiegare le differenze tra JSON e oggetto JavaScript?
- Quali sono i loro usi?
- È uno migliore rispetto agli altri? O dipende dalla situazione?
- Quando usare quale, in quale situazione?
- Perché è stato creato JSON, in primo luogo? Qual era il suo scopo principale?
- Qualcuno può fornire esempi di quando si dovrebbe usare JSON piuttosto che un oggetto JavaScript e viceversa?
Soluzione
In primo luogo si dovrebbe sapere cosa JSON è:
- È lingua agnostico formato di interscambio dati.
La sintassi di JSON è stato ispirato dal oggetto JavaScript letterale notazione, ma ci sono differenze tra di loro.
Per esempio, in JSON tutti i tasti 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 ECMAScript 3rd Edition.), L'utilizzo di parole riservate come nomi di proprietà non è consentita, ad esempio:
var o = { if: "foo" }; // SyntaxError in ES3
Mentre, utilizzando un letterale stringa come un nome di proprietà (citando il nome di proprietà) non dà problemi:
var o = { "if": "foo" };
per "compatibilità" (e facile eval'ing forse?) Le virgolette sono obbligatori.
I tipi di dati in JSON sono anche limitata ai seguenti valori:
-
string
-
number
-
object
-
array
- Un letterale come:
-
true
-
false
-
null
-
La grammatica di cambiamenti Strings
. Essi Sono d' essere delimitati da doppi apici , mentre in JavaScript, è possibile utilizzare le virgolette singole o doppie in modo intercambiabile.
// Invalid JSON:
{ "foo": 'bar' }
Il JSON grammatica della Numbers
accettato cambia anche, in JavaScript è possibile utilizzare esadecimali letterali, ad esempio 0xFF
, o (il famigerato) letterali Octal esempio 010
. In JSON è possibile utilizzare solo decimale 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
.
Altri suggerimenti
JSON è una rappresentazione stringa di un oggetto. Si tratta di un formato di serializzazione interoperabile. Non è legato solo a JavaScript. Per esempio ci sono serializzatori JSON per .NET che consente di serializzare / deserializzare oggetti .NET.
Quindi è solo un formato che consente di convertire dagli oggetti a corda e indietro che è conveniente se si desidera trasferire loro sul filo.
E 'molto vicino alla rappresentazione oggetto JavaScript e se semplicemente eval()
una stringa JSON si otterrà l'oggetto corrispondente.
JSON è un formato di interscambio di dati, il che succede solo a guardare come un sottoinsieme di YAML o codice JavaScript è possibile eseguire e ottenere un oggetto indietro. Un oggetto JavaScript è solo un oggetto in JavaScript.
Con JSON essere un formato di interscambio di dati è possibile scambiare dati strutturati in una forma testuale con esso. E 'abbastanza disaccoppiato da JavaScript, ormai. oggetto JavaScript permette di creare e lavorare con i dati strutturati durante l'esecuzione di un programma JavaScript.