Maison  >  Article  >  développement back-end  >  structure golang转json

structure golang转json

WBOY
WBOYoriginal
2023-05-14 22:33:072218parcourir

Golang est un langage de programmation très populaire. Il offre non seulement de fortes performances de concurrence, mais possède également une riche bibliothèque standard et un code facile à lire. En Golang, struct est largement utilisé. Struct peut non seulement encapsuler des données, mais également faciliter la sérialisation et la désérialisation. Dans cet article, nous verrons comment convertir une structure au format Golang au format JSON.

Tout d’abord, comprenons ce qu’est JSON. JSON, abréviation de JavaScript Object Notation, est un format d'échange de données léger couramment utilisé pour transférer des données entre clients et serveurs. Comparé au XML, le format JSON est plus concis et plus facile à lire.

Dans Golang, la conversion d'une structure au format JSON est très simple. Nous pouvons accomplir cette tâche grâce au package "encoding/json" intégré. Voici un exemple de code simple qui montre comment convertir une structure au format JSON :

package main

import (
    "encoding/json"
    "fmt"
)

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

func main() {
    person := Person{Name: "Amy", Age: 30}
    personJSON, err := json.Marshal(person)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(string(personJSON))
}

Dans cet exemple, nous définissons un type de structure appelé Person et créons une instance appelée person. Nous utilisons ensuite la fonction json.Marshal() pour convertir l'instance de personne au format JSON et imprimer le résultat sur la console.

Il est à noter que dans la définition de la structure Person, nous avons ajouté une balise "json". Cette balise représente le nom de clé utilisé lors de la conversion de la structure au format JSON. Dans cet exemple, "name" et "age" sont des noms de clés JSON, et Name et Age sont les noms de champs de structure dans Golang. Si nous ne spécifions pas de balise json pour le champ struct, le nom de la clé JSON sera le même que le nom du champ.

type Person struct {
    Name string
    Age  int
}

Dans cet exemple, les noms de champs dans la structure et les noms de clés JSON sont les mêmes, ils seront donc automatiquement mappés.

En plus d'utiliser la fonction json.Marshal() pour convertir la structure au format JSON, nous pouvons également utiliser la fonction json.Unmarshal() pour convertir le format JSON en struct. Voici un exemple de code :

package main

import (
    "encoding/json"
    "fmt"
)

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

func main() {
    personJSON := `{"name":"Amy","age":30}`
    var person Person
    err := json.Unmarshal([]byte(personJSON), &person)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(person.Name, person.Age)
}

Dans cet exemple, nous définissons une chaîne appelée personJSON qui contient les données d'instance Person représentées au format JSON. Nous utilisons ensuite la fonction json.Unmarshal() pour convertir la chaîne personJSON en type Person et enregistrer le résultat dans une variable nommée person. Enfin, nous imprimons le nom et l'âge de l'instance de personne.

Il est à noter que dans la fonction json.Unmarshal(), le premier paramètre est une tranche de type octet, qui représente les données JSON à convertir en struct. Le deuxième paramètre est un pointeur vers le type Person, qui représente les données JSON qui seront décodées dans une instance de ce type.

En conclusion, convertir une structure au format Golang au format JSON est une tâche très simple. Nous pouvons le faire en utilisant le package intégré "encoding/json". En ajoutant la balise "json" au champ struct, nous pouvons personnaliser le nom de la clé JSON. A l’inverse, si aucun label n’est spécifié, le nom de la clé JSON sera le même que le nom du champ. Lors de la désérialisation JSON, assurez-vous de transmettre le type cible comme pointeur afin que la valeur de ce type soit mise à jour au retour de la fonction.

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