Golang est un langage de programmation open source largement utilisé dans le développement d'applications Web. Dans Golang, il fournit non seulement une riche bibliothèque de fonctions, mais fournit également une variété de méthodes d'encodage et de décodage, notamment json, xml et protobuf. Cet article présentera les méthodes d'encodage et de décodage json, xml et protobuf des fonctions Golang et leur utilisation.
1. Encodage et décodage json
1.1 Encodage
Dans Golang, encoder la structure au format json est très simple. Utilisez simplement la fonction Marshal dans le package json pour encoder la structure en données json.
Par exemple, nous avons une structure comme suit :
type Student struct { Name string `json:"name"` Age int `json:"age"` Address string `json:"address"` }
Si nous voulons encoder cette structure au format json, nous pouvons faire ceci :
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. Encodage et décodage xml
2.1 Encodage
En Golang, la structure peut également être encodée au format XML. Utilisez simplement la fonction Marshal dans le package encoding/xml.
Par exemple, nous avons une structure comme suit :
type Student struct { Name string `xml:"name"` Age int `xml:"age"` Address string `xml:"address"` }
Si nous voulons encoder cette structure au format xml, nous pouvons faire ceci :
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. Encodage et décodage de protobuf
3.1 Installez protobuf
Avant d'effectuer l'encodage et le décodage de protobuf, vous vous devez d'abord installer protobuf. La méthode d'installation est la suivante :
Téléchargez le fichier d'installation de protobuf. Adresse de téléchargement : https://github.com/protocolbuffers/protobuf/releasesExtractez le fichier d'installation et entrez dans le répertoire décompressé../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:"北京市朝阳区"
#🎜🎜 #De même, il est également très simple d'utiliser la fonction Unmarshal dans le package protobuf pour décoder les données protobuf dans une structure. Transmettez simplement les données protobuf et le type de message dans la fonction Unmarshal.
Par exemple, nous avons les données protobuf suivantes :
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}
Si nous voulons décoder ces données protobuf en une structure, nous pouvons faire ceci :
var s pb.Student err := proto.Unmarshal(data, &s) if err != nil { //错误处理 } fmt.Println(s.Name, s.Age, s.Address)
张三 18 北京市朝阳区
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!