in Golang, was ist der Unterschied zwischen Json-Codierung und Marshalling

9

Was ist der Unterschied zwischen JSON "Encoding / Decoding" und JSON "Marshalling / Unmarshalling"?

Versuchen zu lernen, wie man eine RESTFUL api in golang schreibt und nicht sicher ist, was der Unterschied zwischen JSON 'encoding' und 'marshalling' ist oder ob sie gleich sind?

    
Scott 11.10.2015, 03:02
quelle

3 Antworten

4

Im Allgemeinen bezieht sich die Kodierung / Dekodierung JSON auf den Prozess des tatsächlichen Lesens / Schreibens der Zeichendaten in eine Zeichenfolge oder eine binäre Form. Marshaling / Unmarshalling bezieht sich auf den Prozess der Zuordnung von JSON -Typen von und zu Go Datentypen und Primitiven.

Die eigentliche Codierung kann Dinge wie das Serialisieren von Unicode-Zeichen umfassen. Ich denke, dass sie manchmal in der Dokumentation etwas austauschbar verwendet werden können, weil sie im Allgemeinen in demselben Schritt auftreten. Die Marshal-Funktion bestimmt zum Beispiel, welchem ​​JSON-Typ etwas zugeordnet werden soll, und dann wird es in einer Zeichenkettenform codiert (die andere Details enthalten kann, wie z. B. Sonderzeichen, wenn es sich um Textdaten handelt).

Weitere Informationen dazu, wie Sie Marshalling / unmarshaling Schritte funktionieren.

    
leeor 11.10.2015 03:07
quelle
4
  • Marschall = & gt; Zeichenfolge
  • Kodierung = & gt; Stream

Marshal und Unmarshal konvertieren JSON in eine Zeichenfolge und umgekehrt. Encoding und Decoding konvertieren JSON in einen Stream und umgekehrt.

Der folgende Code zeigt die Funktionsweise von Marshal und Unmarshal

%Vor%

Encoder und Decoder schreiben struct in den Slice eines Streams oder lesen Daten aus einem Slice eines Streams und wandeln sie in eine struct um. Intern wird auch die Marshal-Methode implementiert. Der einzige Unterschied besteht darin, ob Sie mit string oder bytes marshal spielen möchten und ob Daten, die Sie auf einer Writer-Schnittstelle lesen oder schreiben wollen, encades und decode verwenden.

    
vinit kantrod 29.04.2017 05:59
quelle
0

func Encode ist eine Methode für einen Encoder, der JSON codierte Go-Typen in einen Ausgabestrom schreibt (func NewEncoder nimmt einen i.Writer und gibt einen * Encoder zurück).

Ihre Go-Typen kommen in die Blackbox und werden in der JSON-Formatierung in den Stream geschrieben.

Marshal ist eine Funktion, die JSON-Kodierung von Go-Typen zurückgibt.

Hier kommen Ihre Go-Typen in die Blackbox und kommen in der JSON-Formatierung aus der Box.

Es ist gut dokumentiert unter: golang.org/pkg/encoding/json/

    
Snowman 11.10.2015 13:59
quelle

Tags und Links