Maison > développement back-end > Golang > 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

王林
Libérer: 2023-05-18 08:00:24
original
1444 Les gens l'ont consulté

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"`
}
Copier après la connexion

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))
Copier après la connexion
#🎜 🎜 #Le format json de sortie est le suivant :

{
    "name": "张三",
    "age": 18,
    "address": "北京市朝阳区"
}
Copier après la connexion

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": "上海市浦东新区"
}`
Copier après la connexion

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)
Copier après la connexion
# 🎜🎜 #Le résultat de sortie est :

李四 20 上海市浦东新区
Copier après la connexion
Copier après la connexion

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"`
}
Copier après la connexion

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))
Copier après la connexion
#🎜 🎜#Le format XML de sortie est le suivant :

<Student>
    <name>张三</name>
    <age>18</age>
    <address>北京市朝阳区</address>
</Student>
Copier après la connexion

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>`
Copier après la connexion

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)
Copier après la connexion
# 🎜🎜 #Le résultat de sortie est :

李四 20 上海市浦东新区
Copier après la connexion
Copier après la connexion

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
    Copier après la connexion
  3. Vérifiez si protobuf est installé avec succès :
protoc --version
Copier après la connexion
# 🎜🎜# Si des informations similaires aux suivantes sont affichées, protobuf a été installé avec succès :
    libprotoc 3.6.1
    Copier après la connexion
  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;
}
Copier après la connexion

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))
Copier après la connexion

L'encodage protobuf de sortie est le suivant :

1:6
2:18
3:"北京市朝阳区"
Copier après la connexion

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}
Copier après la connexion

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)
Copier après la connexion
# 🎜🎜 #Le résultat de sortie est :

张三 18 北京市朝阳区
Copier après la connexion
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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal