Maison > Article > développement back-end > méthodes d'encodage et de décodage json, xml et protobuf des fonctions Golang
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))#🎜 🎜 #Le format json de sortie est le suivant :
{ "name": "张三", "age": 18, "address": "北京市朝阳区" }1.2 Décodage De même, il est également très simple d'utiliser la fonction Unmarshal dans le package json pour décoder les données json en une structure. Transmettez simplement les données json dans la fonction Unmarshal. Par exemple, nous avons les données json suivantes :
data := `{ "name": "李四", "age": 20, "address": "上海市浦东新区" }`Si nous voulons décoder ces données json dans une structure, nous pouvons faire ceci :
var s Student err := json.Unmarshal([]byte(data), &s) if err != nil { //错误处理 } fmt.Println(s.Name, s.Age, s.Address)# 🎜🎜 #Le résultat de sortie est :
李四 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))#🎜 🎜#Le format XML de sortie est le suivant :
<Student> <name>张三</name> <age>18</age> <address>北京市朝阳区</address> </Student>2.2 Décodage De même, il est également très simple d'utiliser la fonction Unmarshal dans le package encoding/xml pour décoder le XML données dans une structure. Transmettez simplement les données XML dans la fonction Unmarshal. Par exemple, nous avons les données XML suivantes :
data := ` <Student> <name>李四</name> <age>20</age> <address>上海市浦东新区</address> </Student>`Si nous voulons décoder ces données XML dans une structure, nous pouvons faire ceci :
var s Student err := xml.Unmarshal([]byte(data), &s) if err != nil { //错误处理 } fmt.Println(s.Name, s.Age, s.Address)# 🎜🎜 #Le résultat de sortie est :
李四 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# 🎜🎜# Si des informations similaires aux suivantes sont affichées, protobuf a été installé avec succès :
libprotoc 3.6.1
syntax = "proto3"; package main; message Student { string name = 1; int32 age = 2; string address = 3; }Dans protobuf, la balise est une valeur entière utilisée pour identifier chaque champ. Dans cet exemple, le champ nom est défini sur 1, le champ âge est défini sur 2 et le champ adresse est défini sur 3. 3.3 Codage Dans Golang, coder avec protobuf est très simple. Utilisez simplement la fonction Marshal dans le package protobuf. Par exemple, nous avons une structure comme suit :
s := &pb.Student{ Name: "张三", Age: 18, Address: "北京市朝阳区", } b, err := proto.Marshal(s) if err != nil { //错误处理 } fmt.Println(string(b))L'encodage protobuf de sortie est le suivant :
1:6 2:18 3:"北京市朝阳区"3.4 Décodage
#🎜🎜 #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)# 🎜🎜 #Le résultat de sortie est :
张三 18 北京市朝阳区Summary Dans Golang, diverses méthodes d'encodage et de décodage sont fournies pour répondre aux besoins de différents scénarios. L'encodage et le décodage json, l'encodage et le décodage xml et l'encodage et le décodage protobuf sont des méthodes d'encodage et de décodage couramment utilisées et ont une large applicabilité. La maîtrise de ces codecs peut nous aider à développer plus facilement des applications réseau.
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!