Heim > Backend-Entwicklung > Golang > JSON-, XML- und Protobuf-Kodierungs- und Dekodierungsmethoden für Golang-Funktionen

JSON-, XML- und Protobuf-Kodierungs- und Dekodierungsmethoden für Golang-Funktionen

王林
Freigeben: 2023-05-18 08:00:24
Original
1425 Leute haben es durchsucht

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"`
}
Nach dem Login kopieren

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))
Nach dem Login kopieren
#🎜 🎜 #Das Ausgabe-JSON-Format lautet wie folgt:

{
    "name": "张三",
    "age": 18,
    "address": "北京市朝阳区"
}
Nach dem Login kopieren

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": "上海市浦东新区"
}`
Nach dem Login kopieren

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)
Nach dem Login kopieren
# 🎜🎜 #Das Ausgabeergebnis ist:

李四 20 上海市浦东新区
Nach dem Login kopieren
Nach dem Login kopieren

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"`
}
Nach dem Login kopieren

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))
Nach dem Login kopieren
#🎜 🎜#Das Ausgabe-XML-Format ist wie folgt:

<Student>
    <name>张三</name>
    <age>18</age>
    <address>北京市朝阳区</address>
</Student>
Nach dem Login kopieren

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>`
Nach dem Login kopieren

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)
Nach dem Login kopieren
# 🎜🎜 #Das Ausgabeergebnis ist:

李四 20 上海市浦东新区
Nach dem Login kopieren
Nach dem Login kopieren

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/releases

Extrahieren Sie die Installationsdatei und geben Sie das dekomprimierte Verzeichnis ein.
  1. Führen Sie den folgenden Befehl aus, um Protobuf zu installieren:
  2. ./configure
    make
    make check
    sudo make install
    sudo ldconfig
    Nach dem Login kopieren
  3. Überprüfen Sie, ob Protobuf erfolgreich installiert wurde:
protoc --version
Nach dem Login kopieren
# 🎜🎜# Wenn Informationen wie die folgenden ausgegeben werden, wurde Protobuf erfolgreich installiert:
    libprotoc 3.6.1
    Nach dem Login kopieren
  1. 3.2 Schreiben Sie eine Protobuf-Datei
Vor dem Kodieren und Dekodieren von Protobuf müssen Sie schreiben eine Protobuf-Datei. In der Protobuf-Datei müssen Sie den Nachrichtentyp definieren und jedem Feld ein Tag zuweisen.

Zum Beispiel schreiben wir eine Protobuf-Datei wie folgt:

syntax = "proto3";
package main;

message Student {
    string name = 1;
    int32 age    = 2;
    string address = 3;
}
Nach dem Login kopieren

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))
Nach dem Login kopieren

Die Ausgabe-Protobuf-Kodierung ist wie folgt:

1:6
2:18
3:"北京市朝阳区"
Nach dem Login kopieren

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}
Nach dem Login kopieren

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)
Nach dem Login kopieren
# 🎜🎜 #Das Ausgabeergebnis ist:

张三 18 北京市朝阳区
Nach dem Login kopieren
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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage