Maison  >  Article  >  développement back-end  >  golang implémente json

golang implémente json

王林
王林original
2023-05-27 14:37:091506parcourir

Golang est un langage de programmation très populaire et est largement utilisé dans les serveurs de réseau, le traitement du Big Data Internet, le développement d'algorithmes et d'autres domaines. Parmi eux, Golang fournit un mécanisme complet de sérialisation et de désérialisation des données, dont le plus important est la prise en charge des données au format JSON. Cet article explorera comment Golang implémente la sérialisation et la désérialisation des données JSON.

1. Introduction à JSON

JSON signifie JavaScript Object Notation, un format d'échange de données léger, facile à lire, à écrire et à analyser. Il a été proposé pour la première fois par Douglas Crockford en 2001 et formellement défini dans la RFC 7159. Les données au format JSON sont composées de paires clé-valeur. Le nom de la clé est une chaîne et la valeur peut être une chaîne, un nombre, une valeur booléenne, un tableau, un objet et une valeur nulle.

Le format de base des données JSON est le suivant :

{
    "name": "Jack",
    "age": 30,
    "address": {
        "city": "New York",
        "zip": 10001
    },
    "hobbies": ["Swimming", "Reading"]
}

2. Traitement JSON dans Golang

Golang prend en charge le traitement des données JSON via le package "encoding/json" de la bibliothèque standard. Ce package contient des fonctions d'encodage et de décodage JSON, qui nous permettent de convertir une structure (type de structure) en langage Go en tableau d'octets JSON ou vice versa.

Avant d'utiliser ce package, vous devez comprendre certains concepts de base.

  1. Marshal et Unmarshal

Dans Golang, le processus de conversion des types de données en langage Go en données au format JSON est appelé Marshal, et le processus de conversion des données JSON en types de données en langage Go est appelé Unmarshal.

  1. Struct Tag

Dans Golang, les champs des types de structure peuvent être annotés via des balises de structure (Struct Tag). Cette balise peut personnaliser le nom, le type et la taille du champ lors de l'encodage et du décodage JSON.

Un exemple est le suivant :

type Person struct {
    Name    string `json:"name"`
    Age     int    `json:"age"`
    Address string `json:"address"`
}

Dans cet exemple, la structure Personne contient trois champs : Nom, Âge et Adresse. Étant donné que la méthode de dénomination standard de JSON n'est pas cohérente avec la première lettre minuscule couramment utilisée dans le langage Go, nous devons utiliser la marque json pour indiquer à la fonction d'encodage et de décodage JSON quel nom de champ utiliser lors de l'encodage des données.

3. Encodage des données JSON

Dans Golang, le processus de conversion des types de données du langage Go en données au format JSON est appelé Marshal. Ce processus utilise la fonction « json.Marshal() » dans le package « encoding/json ».

Ce qui suit est un exemple d'utilisation de la fonction json.Marshal() pour encoder des types de données en Golang au format JSON :

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name    string `json:"name"`
    Age     int    `json:"age"`
    Address string `json:"address"`
}

func main() {
    p := Person{
        Name:    "Tom",
        Age:     20,
        Address: "Shanghai",
    }

    data, err := json.Marshal(p)
    if err != nil {
        fmt.Println("Json marshal error:", err)
        return
    }

    fmt.Println(string(data))
}

Les résultats de sortie sont les suivants :

{"name":"Tom","age":20,"address":"Shanghai"}

Dans le code ci-dessus, nous définissons un type de structure Personne, Et chaque champ de ce type de structure reçoit une balise json. Dans la fonction principale, nous créons une instance p de type Person et utilisons la fonction json.Marshal() pour l'encoder au format JSON. Le résultat final est un tableau d'octets, qui doit être converti en chaîne à l'aide de la fonction string().

4. Décodage des données JSON

Dans Golang, le processus de conversion des données au format JSON en types de données en langage Go est appelé Unmarshal. Ce processus utilise la fonction « json.Unmarshal() » dans le package « encoding/json ».

Ce qui suit est un exemple d'utilisation de la fonction json.Unmarshal() pour décoder des données au format JSON en types de données dans Golang :

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name    string `json:"name"`
    Age     int    `json:"age"`
    Address string `json:"address"`
}

func main() {
    jsonString := `{"name":"Tom","age":20,"address":"Shanghai"}`

    var p Person
    err := json.Unmarshal([]byte(jsonString), &p)
    if err != nil {
        fmt.Println("Json Unmarshal error:", err)
        return
    }

    fmt.Println(p.Name, p.Age, p.Address)
}

Le résultat de sortie est le suivant :

Tom 20 Shanghai

Dans le code ci-dessus, nous définissons d'abord un JSON chaîne de caractères de format, représentant une instance du type Personne. Nous utilisons ensuite la fonction json.Unmarshal() pour le décoder en un type de données dans Golang. Dans ce processus, nous devons fournir une variable non initialisée comme variable cible pour enregistrer les résultats du décodage. Dans cet exemple, nous utilisons une variable de type structure Personne nommée p. Cette fonction accepte également un pointeur vers un tableau d'octets comme deuxième paramètre pour contenir les données décodées.

5. Conclusion

Cet article présente la méthode d'encodage et de décodage des données JSON via Golang. Ce processus est très pratique lorsque nous traitons de tâches qui nécessitent une interaction avec diverses API Internet. De plus, dans le processus de traitement de la transmission des données, la maîtrise de JSON reste très importante. Si vous souhaitez en savoir plus sur la façon de traiter les données JSON dans Golang, veuillez consulter la documentation officielle pour la description du package "encoding/json".

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
Article précédent:GOLang anti-évasionArticle suivant:GOLang anti-évasion