Maison >développement back-end >Golang >Comment convertir des données Golang en json

Comment convertir des données Golang en json

PHPz
PHPzoriginal
2023-04-24 09:10:282596parcourir

Avec le développement rapide d'Internet, le traitement et la transmission des données sont devenus de plus en plus importants. JSON (JavaScript Object Notation) est un format d'échange de données léger largement utilisé sur Internet pour transmettre des données dans un format texte facile à lire et à écrire. En tant que langage de programmation efficace, Golang offre également un moyen de convertir facilement des données au format JSON.

En Golang, les données peuvent être converties au format JSON en écrivant du code. Plus précisément, il existe les deux méthodes suivantes :

Méthode 1 : Utiliser la bibliothèque standard encoding/json

La bibliothèque standard encoding/json fournit des méthodes pour encoder et décoder le format JSON. Nous devons d'abord définir une structure personnalisée, dont les champs doivent être marqués avec des balises json :

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

这里的json标签指定了该字段在JSON中的名称。接下来,我们可以用生成JSON的byte数组的方式将Person类型的数据转换为JSON格式:

import (
 "encoding/json"
 "fmt"
)

func main() {
 person := Person{Name: "Tom", Age: 18}
 data, err := json.Marshal(person)
 if err != nil {

fmt.Println("JSON Marshalling failed:", err)
return

}
 fmt.Printf("JSON data:n%sn", data)
}

输出结果:

JSON data:
{"name":"Tom","age":18}

我们还可以使用Unmarshal函数将JSON解码为结构体:

func main() {
 jsonStr := {"name":"Tom","age":18}

var person Person
 if err := json.Unmarshal([]byte(jsonStr), &person); err != nil {

fmt.Println("JSON Unmarshalling failed:", err)
return

}

fmt.Printf("Decoded Person data: %+vn", person)
}

输出结果:

Decoded Person data: {Name:Tom Age:18}

方式二:使用第三方库

使用第三方库将数据转换为JSON格式也非常简单。其中比较流行的有gjson、jsoniter等库。这里以jsoniter为例。

首先定义自定义结构体,与方式一相同。

接下来,我们可以使用jsoniter库的Marshal函数将Person类型的数据转换为JSON格式,与标准库类似:

import (
 "github.com/json-iterator/go"
 "fmt"
)

func main() {
 // define struct
 person := Person{Name: "Tom", Age: 18}

// convert data to json format
 data, err := jsoniter.Marshal(person)
 if err != nil {

fmt.Println("JSON Marshalling failed:", err)
return

}

fmt.Printf("JSON data:n%sn", data)
}

输出结果:

JSON data:
{"name":"Tom","age":18}

同样的,我们还可以使用jsoniter库的Unmarshal函数解码由JSON格式转换来的数据:

func main() {
 jsonStr := {"name":"Tom","age":18} Age int json : " age"

}


La balise json précise ici le nom du champ en JSON. Ensuite, nous pouvons convertir les données de type Personne au format JSON en générant un tableau d'octets JSON :

import (

"encoding/json"

"fmt"
)

func main() {

person := Person{Name : "Tom", Âge : 18}

data, err := json.Marshal(person)

if err != nil {

fmt.Println("JSON Unmarshalling failed:", err)
return
}

fmt.Printf("JSON data:n%sn", data )

}🎜 🎜Résultat de sortie :🎜🎜Données JSON :🎜{"name":"Tom","age":18}🎜🎜Nous pouvons également utiliser la fonction Unmarshal pour décoder JSON en une structure :🎜🎜func main() {🎜 jsonStr := {"name":"Tom","age":18}🎜🎜var person Person🎜 if err := json.Unmarshal([]byte(jsonStr), &person) err ; = nil {🎜rrreee🎜}🎜🎜fmt.Printf("Données de personne décodées : %+vn", personne)🎜}🎜🎜Résultat de sortie : 🎜🎜Données de personne décodées : {Nom : Tom Age : 18}🎜 🎜Méthode 2 : Utiliser une bibliothèque tierce🎜🎜Il est également très simple d'utiliser une bibliothèque tierce pour convertir des données au format JSON. Parmi les plus populaires figurent des bibliothèques telles que gjson et jsoniter. Ici, nous prenons jsoniter comme exemple. 🎜🎜Définissez d’abord la structure personnalisée, comme pour la méthode 1. 🎜🎜Ensuite, nous pouvons utiliser la fonction Marshal de la bibliothèque jsoniter pour convertir les données de type Personne au format JSON, similaire à la bibliothèque standard : 🎜🎜import (🎜 "github.com/json-iterator/go"🎜 "fmt"🎜 ) 🎜🎜func main() {🎜 // définir struct🎜 personne := Personne{Nom : "Tom", Âge : 18}🎜🎜// convertir les données au format json🎜 données, err := jsoniter.Marshal(personne) 🎜 if err != nil {🎜rrreee🎜}🎜🎜fmt.Printf("JSON data:n%sn", data)🎜}🎜🎜Résultat de sortie : 🎜🎜JSON data:🎜{"name":"Tom", " age":18}🎜🎜De même, nous pouvons également utiliser la fonction Unmarshal de la bibliothèque jsoniter pour décoder les données converties au format JSON :🎜🎜func main() {🎜 jsonStr := {"name":" Tom" ,"age":18}🎜🎜var person Person🎜 if err := jsoniter.Unmarshal([]byte(jsonStr), &person); err != nil {🎜rrreee🎜}🎜🎜fmt. Printf( "Données de personne décodées : %+vn", personne)🎜}🎜🎜Résultat de sortie :🎜🎜Données de personne décodées : {Nom : Tom Age : 18}🎜🎜Résumé🎜🎜En golang, nous pouvons utiliser l'encodage de la bibliothèque standard /json convertit les données au format JSON, vous pouvez également utiliser des bibliothèques tierces pour réaliser la même conversion. Les différentes bibliothèques diffèrent sur certains aspects, vous pouvez donc choisir la bibliothèque appropriée en fonction de votre situation réelle. Quelle que soit la méthode utilisée, la conversion du format JSON est très simple. 🎜

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