Se converto l'oggetto sopra in JSON usando var jSonString = JSON.stringify(testObject);
, qual è la differenza tra 2 (JS obj e JSON)?
JSON è un formato di interscambio di dati. È uno standard che descrive come elenchi ordinati e mappe non ordinate, stringhe booleane e numeri possano essere rappresentati in una stringa. Proprio come XML e YAML è un modo per trasmettere informazioni strutturate tra le lingue, JSON è lo stesso. Un oggetto JavaScript invece è un tipo fisico. Proprio come un array PHP, una classe / struttura C ++, un oggetto JavaScript è un tipo interno a JavaScript.
Ecco una storia Immaginiamo di aver acquistato alcuni mobili da un negozio e di volerlo consegnare. Tuttavia l'unico rimasto disponibile è il modello di visualizzazione, ma si accetta di acquistarlo.
Nel negozio, la cassettiera che hai acquistato è un oggetto vivente:
var chestOfDrawers = {
color: "red",
numberOfDrawers: 4
}
Tuttavia, non puoi inviare una cassettiera nel post, quindi lo smantelli (leggi, stringi). Ora è inutile in termini di mobili. Ora è JSON. È in forma piatta.
{"color":"red","numberOfDrawers":4}
Quando lo ricevi, ricostruisci la cassettiera (leggi, analizzala). Ora è tornato in una forma di oggetto.
Il motivo dietro JSON / XML e YAML è quello di consentire il trasferimento dei dati tra linguaggi di programmazione in un formato che entrambe le lingue partecipanti possano comprendere; non puoi dare direttamente a PHP o C ++ il tuo oggetto JavaScript; perché ogni lingua rappresenta un oggetto diversamente nascosto. Tuttavia, poiché abbiamo ristretto l'oggetto alla notazione JSON; cioè un modo standardizzato per rappresentare i dati, possiamo trasmettere la rappresentazione JSON dell'oggetto ad un altro linguaggio (C ++, PHP), possono ricreare l'oggetto JavaScript che avevamo nel loro stesso oggetto basato sulla rappresentazione JSON dell'oggetto.
È importante notare che JSON non può rappresentare funzioni o date. Se si tenta di stringere un oggetto con un membro della funzione, la funzione verrà omessa dalla rappresentazione JSON. Una data verrà convertita in una stringa;
JSON.stringify({
foo: new Date(),
blah: function () {
alert('hello');
}
}); // returns the string "{"foo":"2011-11-28T10:21:33.939Z"}"