2015-05-05 19 views
8

JSON.stringify() è equivalente alla serializzazione o alla serializzazione effettiva oppure è solo un passaggio necessario verso la serializzazione ?JSON.stringify rispetto a serializzazione

JSON.stringify() è sufficiente ma non necessario per la serializzazione? O è necessario ma non sufficiente? O non è né necessario né sufficiente per la serializzazione di oggetti JavaScript?

+0

Potrei aggiungere che JSON è stato progettato per rappresentare una _subset_ di un oggetto JavaScript, e, a parte la sua notazione particolare (non flessibile come un oggetto JavaScript letterale), non include le proprietà di funzione, i metodi AKA. – Manngo

risposta

11

La serializzazione è l'atto di convertire i dati in un formato che può essere scritto su disco o trasmesso sulla rete (o scritto su carta se è ciò che si desidera). Di solito, la serializzazione sta trasformando oggetti in testo ma non è necessario in quanto esistono diversi formati di serializzazione come bencoding di bittorrent e i formati standard asn.1 standard sono binari.

JSON è una forma di formato di serializzazione basata su testo ed è attualmente molto popolare grazie alla sua semplicità. Non è l'unico però. Altri formati popolari includono XML e CSV.

A causa della sua popolarità e dell'origine come sintassi letterale dell'oggetto javascript ES5 ha introdotto JSON.stringify() per generare una stringa JSON da un oggetto. In precedenza dovevi usare le librerie o scrivere un parser di discesa ricorsivo per fare il lavoro.

Quindi, è il numero JSON.stringify() sufficiente per la serializzazione? Sì, se il formato di output desiderato è JSON. No, se vuoi altri formati di output come XML o CSV o bencode.

Esistono limitazioni al formato JSON. Una limitazione è che JSON non può codificare le funzioni in modo che JSON.stringify() ignori le funzioni/i metodi durante la serializzazione. Anche JSON non può codificare riferimenti circolari. Anche la maggior parte degli altri formati di serializzazione presenta questa limitazione, ma poiché JSON ha l'aspetto di come la sintassi javascript, alcune persone credono che possa fare ciò che i valori letterali degli oggetti javascript possono fare. Non può

Quindi la relazione tra "JSON" e "serializzazione" è come il rapporto tra "Toyota Prius" e "car". JSON.stringify() è semplicemente una funzione che genera stringhe JSON, quindi suppongo che ne farebbe una fabbrica Toyota.

2

Vecchia domanda, ma le seguenti informazioni potrebbero essere utili per i posteri.

Naturalmente, è possibile serializzare in qualsiasi modo, incluso un numero qualsiasi di metodi personalizzati, ma JSON è diventato un metodo sempre più popolare.

Il vantaggio più ovvio di JSON è rappresentato dal fatto che rappresenta gli oggetti nello stesso modo dei valori letterali oggetto JavaScript, sebbene sia leggermente meno flessibile. Tuttavia, se puoi rappresentare dati normali in JavaScript, JSON è una buona corrispondenza.

La funzione più significativa è rappresentata dal fatto che, poiché rappresenta oggetti e matrici, può rappresentare dati gerarchici relativamente complessi &.

Per un motivo o per un altro, JSON ha più o meno XML soppiantato come serializzazione preferita per l'invio di dati tra il server e il browser. È così utile che molte lingue includano le proprie funzioni JSON (il PHP, ad esempio, ha le migliori funzioni di json_encode & json_decode), così come alcuni database moderni. Io stesso ho trovato conveniente usare le funzioni JSON per archiviare una struttura di dati più complessa in un singolo campo di un database senza JavaScript ovunque a vista).

La risposta breve è sì, per la maggior parte è un passaggio sufficiente per serializzare la maggior parte dei dati (non binari). Tuttavia, non è necessario in quanto vi sono alternative.

serializzazione di dati binari, d'altra parte, ora questa è un'altra storia ...