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))
{ "name": "张三", "age": 18, "address": "北京市朝阳区" }
data := `{ "name": "李四", "age": 20, "address": "上海市浦东新区" }`
var s Student err := json.Unmarshal([]byte(data), &s) if err != nil { //错误处理 } fmt.Println(s.Name, s.Age, s.Address)
李四 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))
<Student> <name>张三</name> <age>18</age> <address>北京市朝阳区</address> </Student>
data := ` <Student> <name>李四</name> <age>20</age> <address>上海市浦东新区</address> </Student>`
var s Student err := xml.Unmarshal([]byte(data), &s) if err != nil { //错误处理 } fmt.Println(s.Name, s.Age, s.Address)
李四 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
libprotoc 3.6.1
syntax = "proto3"; package main; message Student { string name = 1; int32 age = 2; string address = 3; }
s := &pb.Student{ Name: "张三", Age: 18, Address: "北京市朝阳区", } b, err := proto.Marshal(s) if err != nil { //错误处理 } fmt.Println(string(b))
1:6 2:18 3:"北京市朝阳区"
#🎜🎜 #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)
张三 18 北京市朝阳区
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!