JSON.stringify versus Serialisierung

9

Ist JSON.stringify( ) gleichbedeutend mit Serialisierung oder effektiver Serialisierung oder ist es nur ein notwendiger Schritt in Richtung Serialisierung?

Mit anderen Worten, ist JSON.stringify( ) ausreichend, aber nicht notwendig für die Serialisierung? Oder ist das notwendig, aber nicht ausreichend? Oder ist es für die Serialisierung von JavaScript-Objekten weder notwendig noch ausreichend?

    
Alexander Mills 05.05.2015, 05:11
quelle

2 Antworten

12

Bei der Serialisierung werden Daten in ein Format konvertiert, das auf die Festplatte geschrieben oder über das Netzwerk übertragen werden kann (oder auf Papier geschrieben werden kann, wenn Sie das möchten). Normalerweise wandelt die Serialisierung Objekte in Text um, aber das ist nicht notwendig, da es mehrere Serialisierungsformate gibt, wie zum Beispiel das Bencoding von bittorrent und das alte / alte Standardformate asn.1 sind binär.

JSON ist eine Form des textbasierten Serialisierungsformats und ist derzeit aufgrund seiner Einfachheit sehr beliebt. Es ist jedoch nicht der einzige. Andere beliebte Formate sind XML und CSV .

Aufgrund seiner Beliebtheit und seiner Herkunft als JavaScript-Objekt-Literalsyntax führte ES5 JSON.stringify() ein, um eine JSON-Zeichenfolge von einem Objekt zu generieren. Zuvor mussten Sie Bibliotheken verwenden oder einen rekursiven Descent-Parser schreiben, um die Aufgabe zu erledigen.

Also, ist JSON.stringify() genug für die Serialisierung? Ja, wenn das gewünschte Ausgabeformat JSON ist. Nein, wenn Sie andere Ausgabeformate wie XML oder CSV oder Bencode möchten.

Das JSON-Format unterliegt Einschränkungen. Eine Einschränkung ist, dass JSON Funktionen nicht kodieren kann, so dass JSON.stringify() Funktionen / Methoden beim Serialisieren ignoriert. JSON kann auch keine Zirkelverweise codieren. Die meisten anderen Serialisierungsformate haben auch diese Einschränkung, aber da JSON wie JavaScript-Syntax aussieht , gehen einige Leute davon aus, dass es das tun kann, was Javascript-Objektliterale können. Es kann nicht.

Also ist die Beziehung zwischen "JSON" und "Serialisierung" wie die Beziehung zwischen "Toyota Prius" und "Auto". JSON.stringify() ist einfach eine Funktion, die JSON-Strings erzeugt, also würde ich annehmen, dass es eine Toyota-Fabrik werden würde.

    
slebetman 05.05.2015, 05:40
quelle
2

Alte Frage, aber die folgenden Informationen könnten für die Nachwelt nützlich sein.

Natürlich können Sie beliebig serialisieren, einschließlich einer beliebigen Anzahl von benutzerdefinierten Methoden, aber JSON ist eine zunehmend beliebte Methode geworden.

Der offensichtlichste Vorteil von JSON ist, dass es Objekte auf die gleiche Weise wie JavaScript-Objektliterale darstellt, obwohl es etwas weniger flexibel ist. Wenn Sie jedoch normale Daten in JavaScript darstellen können, ist JSON eine gute Übereinstimmung.

Das wichtigste Merkmal ist, dass, da es sowohl Objekte als auch Arrays repräsentiert, es ziemlich komplex darstellen kann & amp; hierarchische Daten.

Aus dem einen oder anderen Grund hat JSON mehr oder weniger verdrängt XML als die bevorzugte Serialisierung für das Senden von Daten zwischen dem Server und dem Browser. Es ist so nützlich, dass viele Sprachen ihre eigenen JSON-Funktionen enthalten (PHP hat zum Beispiel die besseren Namen json_encode & amp; json_decode -Funktionen), wie es einige moderne Datenbanken tun. Ich selbst fand es bequem, JSON-Funktionen zu verwenden, um eine komplexere Datenstruktur in einem einzigen Feld einer Datenbank zu speichern, ohne dass JavaScript in Sichtweite ist.)

Die kurze Antwort ist ja, zum größten Teil ist es ein ausreichender Schritt, um die meisten Daten (nicht-binär) zu serialisieren. Es ist jedoch nicht notwendig, da es Alternativen gibt.

Serialisierung von Binärdaten andererseits, das ist jetzt eine andere Geschichte ...

    
Manngo 06.02.2017 04:09
quelle

Tags und Links