Maison  >  Article  >  développement back-end  >  Discutez de la façon de convertir des données au format json dans Golang

Discutez de la façon de convertir des données au format json dans Golang

PHPz
PHPzoriginal
2023-03-22 14:22:401689parcourir

Avec l'avènement de l'ère Internet, la transmission et le traitement des données sont devenus de plus en plus importants. Dans le processus de développement logiciel moderne, la capacité à traiter les données est très importante. En tant que langage de programmation moderne, le langage Golang possède de fortes capacités de traitement de données. Parmi eux, il est très courant de convertir des structures en Golang au format JSON. Cet article discutera de la méthode de conversion de Golang en JSON et de la façon de l'utiliser dans Golang.

Utilisez la bibliothèque standard Golang pour l'encodage et le décodage JSON

Golang fournit une bibliothèque standard pour gérer l'encodage et le décodage au format JSON. Dans la bibliothèque standard de Golang, le package encoding/json fournit des méthodes pour convertir le format JSON en types Golang et inversement. Parmi elles, la fonction Marshal convertit le type Golang au format JSON, et la fonction Unmarshal convertit le format JSON en type Golang.

Tout d’abord, regardons un exemple simple de conversion d’une structure au format JSON.

package main

import (
    "encoding/json"
    "fmt"
)

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

func main() {
    p := Person{"Tom", 24}

    b, err := json.Marshal(p)
    if err != nil {
        fmt.Println("Error: ", err)
    }
    fmt.Println(string(b))
}

Sortie :

{"name":"Tom","age":24}

Dans l'exemple ci-dessus, nous avons créé une structure nommée Person et utilisé la fonction Marshal pour la convertir au format JSON. Pendant le processus de conversion, le nom d'attribut « Nom » dans la structure est converti en « nom » et « Âge » est converti en « âge ».

De même, nous pouvons également utiliser la fonction Unmarshal pour convertir le format JSON en type Golang. Voici un exemple simple :

package main

import (
    "encoding/json"
    "fmt"
)

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

func main() {
    jsonString := `{"name":"Tom","age":24}`

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

Sortie :

{Tom 24}

Dans l'exemple ci-dessus, nous utilisons la fonction Unmarshal pour convertir la chaîne au format JSON en un type Golang et stocker le type dans la variable p.

Lors de l'analyse d'une chaîne au format JSON, nous devons transmettre un pointeur cible. Si l'analyse réussit, les données JSON seront stockées dans la variable pointée par ce pointeur.

Lors de l'analyse de JSON en types Golang, vous devez faire attention à certains détails. Par exemple, les valeurs booléennes true et false dans JSON sont analysées comme type bool dans Golang. Les nombres sont analysés sous forme de types float, entier ou int64, en fonction du type de données et de la plage dans JSON.

Utilisez des bibliothèques tierces pour l'encodage et le décodage JSON

Bien que la bibliothèque standard fournie dans Golang soit simple et facile à utiliser, ses performances ne sont pas les meilleures. Pour certaines données JSON volumineuses ou structures de données complexes, l'utilisation de la bibliothèque standard pour l'encodage et le décodage JSON peut entraîner une diminution des performances du programme. Par conséquent, de nombreuses bibliothèques tierces ont vu le jour et sont largement utilisées.

Parmi elles, l'une des bibliothèques les plus populaires est json-iterator/go. Cette bibliothèque permet un encodage et un décodage JSON plus rapides que la bibliothèque standard et est très simple à utiliser.

Regardons un exemple simple utilisant la bibliothèque json-iterator/go :

package main

import (
    "fmt"

    "github.com/json-iterator/go"
)

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

func main() {
    p := Person{"Tom", 24}

    json := jsoniter.ConfigCompatibleWithStandardLibrary
    b, err := json.Marshal(p)
    if err != nil {
        fmt.Println("Error: ", err)
    }
    fmt.Println(string(b))
}

Le résultat de sortie est le même que celui de la bibliothèque standard :

{"name":"Tom","age":24}

Dans l'exemple ci-dessus, nous utilisons la variable ConfigCompatibleWithStandardLibrary fournie dans json-iterator Bibliothèque /go, pour garantir que l'encodage et le décodage JSON sont cohérents avec la bibliothèque standard.

Résumé

Cet article traite de la méthode d'encodage et de décodage JSON en langage Golang. La conversion des types Golang au format JSON à l'aide de la bibliothèque standard est très simple à utiliser et peut répondre à la plupart des besoins. Si vous rencontrez des problèmes de performances ou avez besoin de fonctions plus avancées, il est recommandé d'utiliser des bibliothèques tierces telles que json-iterator/go. Quelle que soit la bibliothèque utilisée, nous devons prêter attention à la conversion des types de données et aux détails pour garantir l'exactitude de l'encodage et du décodage 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