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

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

王林
王林Original
2023-05-18 08:00:241322Durchsuche

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/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
  3. Überprüfen Sie, ob Protobuf erfolgreich installiert wurde:
protoc --version
# 🎜🎜# Wenn Informationen wie die folgenden ausgegeben werden, wurde Protobuf erfolgreich installiert:
    libprotoc 3.6.1
  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;
}

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!

Stellungnahme:
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