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?
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.
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.
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/
Tags und Links go