Maison  >  Article  >  développement back-end  >  méthodes d'encodage et de décodage json, xml et protobuf des fonctions Golang

méthodes d'encodage et de décodage json, xml et protobuf des fonctions Golang

王林
王林original
2023-05-18 08:00:241385parcourir

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

Extractez le fichier d'installation et entrez dans le répertoire décompressé.
  1. Exécutez la commande suivante pour installer protobuf :
  2. ./configure
    make
    make check
    sudo make install
    sudo ldconfig
  3. Vérifiez si protobuf est installé avec succès :
protoc --version
# 🎜🎜# Si des informations similaires aux suivantes sont affichées, protobuf a été installé avec succès :
    libprotoc 3.6.1
  1. 3.2 Écrivez un fichier protobuf
Avant l'encodage et le décodage de protobuf, vous devez écrire un fichier protobuf. Dans le fichier protobuf, vous devez définir le type de message et attribuer une balise à chaque champ.

Par exemple, nous écrivons un fichier protobuf comme suit :

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn