Heim > Artikel > Backend-Entwicklung > JSON-, XML- und Protobuf-Kodierungs- und Dekodierungsmethoden für Golang-Funktionen
Golang ist eine Open-Source-Programmiersprache, die häufig bei der Entwicklung von Webanwendungen verwendet wird. In Golang bietet es nicht nur eine umfangreiche Funktionsbibliothek, sondern auch eine Vielzahl von Kodierungs- und Dekodierungsmethoden, einschließlich JSON, XML und Protobuf. In diesem Artikel werden die JSON-, XML- und Protobuf-Codierungs- und Decodierungsmethoden von Golang-Funktionen sowie deren Verwendung vorgestellt.
1. JSON-Kodierung und -Dekodierung
1.1 Kodierung
In Golang ist die Kodierung der Struktur in das JSON-Format sehr einfach. Verwenden Sie einfach die Marshal-Funktion im JSON-Paket, um die Struktur in JSON-Daten zu kodieren.
Zum Beispiel haben wir eine Struktur wie folgt:
type Student struct { Name string `json:"name"` Age int `json:"age"` Address string `json:"address"` }
Wenn wir diese Struktur in das JSON-Format kodieren möchten, können wir dies tun:
s := Student{ Name: "张三", Age: 18, Address: "北京市朝阳区", } b, err := json.Marshal(s) if err != nil { //错误处理 } fmt.Println(string(b))#🎜 🎜 #Das Ausgabe-JSON-Format lautet wie folgt:
{ "name": "张三", "age": 18, "address": "北京市朝阳区" }1.2 Dekodierung In ähnlicher Weise ist es auch sehr einfach, die Unmarshal-Funktion im JSON-Paket zu verwenden, um JSON-Daten zu dekodieren eine Struktur. Übergeben Sie einfach die JSON-Daten an die Unmarshal-Funktion. Zum Beispiel haben wir die folgenden JSON-Daten:
data := `{ "name": "李四", "age": 20, "address": "上海市浦东新区" }`Wenn wir diese JSON-Daten in eine Struktur dekodieren möchten, können wir dies tun:
var s Student err := json.Unmarshal([]byte(data), &s) if err != nil { //错误处理 } fmt.Println(s.Name, s.Age, s.Address)# 🎜🎜 #Das Ausgabeergebnis ist:
李四 20 上海市浦东新区
2. XML-Kodierung und -Dekodierung
2.1 Kodierung
In Golang kann die Struktur auch kodiert werden als XML-Format. Verwenden Sie einfach die Marshal-Funktion im Paket „encoding/xml“.
Zum Beispiel haben wir eine Struktur wie folgt:
type Student struct { Name string `xml:"name"` Age int `xml:"age"` Address string `xml:"address"` }
Wenn wir diese Struktur in das XML-Format kodieren möchten, können wir dies tun:
s := Student{ Name: "张三", Age: 18, Address: "北京市朝阳区", } b, err := xml.Marshal(s) if err != nil { //错误处理 } fmt.Println(string(b))#🎜 🎜#Das Ausgabe-XML-Format ist wie folgt:
<Student> <name>张三</name> <age>18</age> <address>北京市朝阳区</address> </Student>2.2 Dekodierung In ähnlicher Weise ist es auch sehr einfach, die Unmarshal-Funktion im Paket „coding/xml“ zum Dekodieren von XML zu verwenden Daten in eine Struktur. Übergeben Sie einfach die XML-Daten an die Unmarshal-Funktion. Zum Beispiel haben wir die folgenden XML-Daten:
data := ` <Student> <name>李四</name> <age>20</age> <address>上海市浦东新区</address> </Student>`Wenn wir diese XML-Daten in eine Struktur dekodieren möchten, können wir dies tun:
var s Student err := xml.Unmarshal([]byte(data), &s) if err != nil { //错误处理 } fmt.Println(s.Name, s.Age, s.Address)# 🎜🎜 #Das Ausgabeergebnis ist:
李四 20 上海市浦东新区
3. Protobuf-Kodierung und -Dekodierung
3.1 Installieren Sie Protobuf
Bevor Sie die Protobuf-Kodierung und -Dekodierung durchführen, müssen Sie Zuerst muss Protobuf installiert werden. Die Installationsmethode ist wie folgt:
Laden Sie die Protobuf-Installationsdatei herunter. Download-Adresse: https://github.com/protocolbuffers/protobuf/releasesExtrahieren Sie die Installationsdatei und geben Sie das dekomprimierte Verzeichnis ein../configure make make check sudo make install sudo ldconfig
protoc --version# 🎜🎜# Wenn Informationen wie die folgenden ausgegeben werden, wurde Protobuf erfolgreich installiert:
libprotoc 3.6.1
syntax = "proto3"; package main; message Student { string name = 1; int32 age = 2; string address = 3; }In Protobuf ist Tag ein ganzzahliger Wert, der zur Identifizierung jedes Felds verwendet wird. In diesem Beispiel ist das Namensfeld auf 1, das Altersfeld auf 2 und das Adressfeld auf 3 gesetzt. 3.3 Codierung In Golang ist die Codierung mit Protobuf sehr einfach. Verwenden Sie einfach die Marshal-Funktion im Protobuf-Paket. Zum Beispiel haben wir eine Struktur wie folgt:
s := &pb.Student{ Name: "张三", Age: 18, Address: "北京市朝阳区", } b, err := proto.Marshal(s) if err != nil { //错误处理 } fmt.Println(string(b))Die Ausgabe-Protobuf-Kodierung ist wie folgt:
1:6 2:18 3:"北京市朝阳区"3.4 Dekodierung
#🎜🎜 #In ähnlicher Weise ist es auch sehr einfach, die Unmarshal-Funktion im Protobuf-Paket zu verwenden, um Protobuf-Daten in eine Struktur zu dekodieren. Übergeben Sie einfach die Protobuf-Daten und den Nachrichtentyp an die Unmarshal-Funktion.
Zum Beispiel haben wir die folgenden Protobuf-Daten:
data := []byte{0x0a, 0x06, 0xe5, 0xbc, 0xa0, 0xe4, 0xb8, 0x89, 0x10, 0x12, 0x0f, 0xe5, 0x8c, 0x97, 0xe4, 0xba, 0xac, 0xe5, 0x9b, 0xbd, 0xe5, 0x8c, 0x9d, 0xe5, 0x8c, 0x97, 0xe5, 0x8c, 0x80, 0x1a, 0x0d, 0xe5, 0x8c, 0x97, 0xe4, 0xba, 0xac, 0xe5, 0x9b, 0xbd, 0xe5, 0x8c, 0x9d}
Wenn wir diese Protobuf-Daten in eine Struktur dekodieren möchten, können wir dies tun:
var s pb.Student err := proto.Unmarshal(data, &s) if err != nil { //错误处理 } fmt.Println(s.Name, s.Age, s.Address)# 🎜🎜 #Das Ausgabeergebnis ist:
张三 18 北京市朝阳区Zusammenfassung In Golang werden verschiedene Kodierungs- und Dekodierungsmethoden bereitgestellt, um den Anforderungen verschiedener Szenarien gerecht zu werden. JSON-Kodierung und -Dekodierung, XML-Kodierung und -Dekodierung sowie Protobuf-Kodierung und -Dekodierung sind häufig verwendete Kodierungs- und Dekodierungsmethoden und haben eine breite Anwendbarkeit. Die Beherrschung dieser Codecs kann uns helfen, Netzwerkanwendungen einfacher zu entwickeln.
Das obige ist der detaillierte Inhalt vonJSON-, XML- und Protobuf-Kodierungs- und Dekodierungsmethoden für Golang-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!