Golang Marschall und Unmarshal

Golang Marschall und Unmarshal
Das Marshaling bezieht sich auf die Umwandlung eines Objekts in ein bestimmtes Datenformat, das für die Übertragung geeignet ist.

JSON ist eines der beliebtesten Datenaustauschformate. Es ist simpel, menschenlesbar und sehr flexibel. Es ist eine ausgezeichnete Wahl für APIs und die meisten Datenübertragung. Das Gerät, das Sie haben, verwendet JSON wahrscheinlich, um eine bestimmte Aufgabe auszuführen.

In einem solchen Fall ist es wichtig zu lernen, wie man mit JSON zusammenarbeitet. In diesem Leitfaden lernen wir, wie man arbeitet.

Golang Marschall

Die Codierung und Dekodierung von JSON -Informationen in Go wird vom Coding/JSON -Paket bereitgestellt. Es ist Teil der Standardbibliothek; Daher müssen Sie es nicht installieren.

Sie müssen es jedoch importieren, bevor Sie es verwenden können.

Das Econding/JSON -Paket codiert einen beliebigen Datentyp für eine gültige JSON -Zeichenfolge, wie wir in diesen Beispielen sehen werden.

Bevor wir diskutieren, wie GO -Strukturen codieren, beginnen wir mit grundlegenden Datentypen.

JSON -Marschallfunktion

Im Folgenden beschreibt die Syntax für die Marschallfunktion, wie im Paket definiert.

Func Marschall (V -Schnittstelle ) ([] Byte, Fehler)

Die Funktion nimmt einen beliebigen Datentyp als Argument an. Die Funktion gibt eine Bytescheibe zurück, und während des Marschallprozesses wird ein Fehler aufgetreten.

Marschall int

Wir können einen Ganzzahltyp marschallieren, wie im folgenden Beispiel gezeigt:

Paket Main
importieren (
"Codierung/JSON"
"fmt"
"reflektieren"
)
funcmain ()
I: = 100
Marshal_int, _: = json.Marschall (i)
// Typ überprüfen
fmt.Println ("Before Cast:", reflektieren.Typeof (marschhal_int))
fmt.Println ("After Cast:", reflektieren.Typeof (String (Marshal_int)))

Im obigen Beispiel beginnen wir zunächst die erforderlichen Pakete importieren. Wir brauchen die Codierung/JSON, FMT und das reflektierende Paket in unserem Beispiel.

Wir benutzen den JSON.Marschall () Methode zum Marschall- und Ganzzahlwert. Sie werden feststellen, dass die Funktion einen Unint8 (eine 8-Bit-Ganzzahl) oder ein Byte zurückgibt. Wir müssen es in eine Zeichenfolge werfen, wie in der folgenden Ausgabe gezeigt:

$ go run marshall.gehen
Vor der Besetzung: [] uint8
Nach der Besetzung: String

Dies gibt eine Ganzzahl -Zeichenfolge zurück.

Marschallschnur.

Wir können einen String -Typ marschallieren, wie im folgenden Beispiel gezeigt:

funcmarshal_str ()
Marshaled_str, _: = json.Marschall ("LinuxHint")
fmt.Println ("Marshalled String:", Marshaled_str)

Wenn wir den oben genannten Code ausführen, sollten wir die String in ein Stück Bytes als:

Marschhalte Saite: [34 76 105 110 117 120 104 105 110 116 34]

Marshall Bool

Sie können auch einen booleschen Typ mit der Marschallfunktion marschhalen. Betrachten Sie das folgende Beispiel:

funcmarshal_bool ()
Marshaled_bool, _: = json.Marschall (falsch)
fmt.Println (Marshaled_bool)

Marschallschwimmer

Marschall einen schwimmenden Typ wie gezeigt:

funcmarshal_float ()
Marshaled_float, _: = json.Marschall (3.14159)
fmt.Println (Marshaled_float)

Marschallscheibe

Das folgende Beispiel zeigt, wie man eine Scheibe in GO marschallt:

funcmarshal_slice ()
Slice_raw: = [] String "Microsoft", "Google", "Amazon"
Marshaled_Slice, _: = json.Marschall (Slice_raw)
fmt.Println (String (Marshaled_Slice))

Marschallstruktur

Betrachten Sie das Beispiel unten: Um eine Struktur in Go zu marschieren, betrachten Sie das folgende Beispiel:

funcmarshal_struct ()
Geben Sie die Mitarbeiterstruktur ein
Full_name String
Alter int
Pensionierter Bool
Gehalt int

Marshal_struct, _: = json.Marschall (Mitarbeiter full_name: "John Doe", Alter: 32, im Ruhestand: Falsch, Gehalt: 140000)
fmt.Println (String (Marshal_struct))

Die obige Beispielfunktion zeigt, wie man einen Strukturtyp in GO marmhal.

Die resultierende Ausgabe ist wie gezeigt:

"Full_name": "John Doe", "Alter": 32, "Pensioniert": Falsch, "Gehalt": 140000

Das Obige repräsentiert die Struktur, die in einen gültigen JSON -String untergebracht ist.

Golang Unmarshal

Unmarshal ist das Gegenteil von Marschall. Sie können Byte -Daten in die Originaldatenstruktur umwandeln.

In Go wird Unmarkshaling vom JSON behandelt.Marshal () Methode.

Betrachten Sie ein Beispiel für JSON -String als:

"Full_name": "John Doe", "Alter": 32, "Pensioniert": Falsch, "Gehalt": 140000

Beginnen wir damit, eine Struktur zu erstellen, die nach der Ausführung des Unmarshals mit dem Byte -Code übereinstimmt.

Geben Sie die Benutzerstruktur ein
Full_name string 'json: "full_name"'
Altersstring 'JSON: "Alter"'
Pensionierter Bool 'JSON: "Ruhestand"'
Gehalt int 'json: "Gehalt"'

Der nächste Schritt besteht darin, den JSON -String in Byte -Code zu erstellen. Sobald wir den Byte -Code haben, können wir ihn in eine Struktur unmarkshal machen.

user_info_bytes: = [] byte (user_info)

Sobald wir den Byte -Code haben, können wir ihn in Strukturen unterziehen.

VAR -Mitarbeiterbenutzer
JSON.Unmarshal (user_info_bytes & Mitarbeiter)

Sobald wir die Struktur haben, können wir auf die Werte zugreifen als:

fmt.Println (Mitarbeiter.Vollständiger Name)
fmt.Println (Mitarbeiter.Alter)
fmt.Println (Mitarbeiter.Im Ruhestand)
fmt.Println (Mitarbeiter.Gehalt)

Der obige Code sollte zurückgeben:

John Doe
32
FALSCH
140000

Der vollständige Quellcode ist wie unten gezeigt:

func unmarshal_struct ()
user_info: = '"full_name": "John Doe", "Alter": 32, "Pensioniert": Falsch, "Gehalt": 140000'
Geben Sie die Benutzerstruktur ein
Full_name string 'json: "full_name"'
Altersstring 'JSON: "Alter"'
Pensionierter Bool 'JSON: "Ruhestand"'
Gehalt int 'json: "Gehalt"'

user_info_bytes: = [] byte (user_info)
VAR -Mitarbeiterbenutzer
JSON.Unmarshal (user_info_bytes & Mitarbeiter)
fmt.Println (Mitarbeiter.Vollständiger Name)
fmt.Println (Mitarbeiter.Alter)
fmt.Println (Mitarbeiter.Im Ruhestand)
fmt.Println (Mitarbeiter.Gehalt)

Abschluss

Marschall und Unmarshal stellen eine wichtige Anforderung der Datenumwandlung dar. Als Programmierer ist es wichtig, sich mit der Ausführung solcher Operationen vertraut zu machen. Dieses Tutorial dient diesem Zweck mit Leichtigkeit.

Danke fürs Lesen und glücklicher Codierung!