Travailler avec JSON en Go : analyse et sérialisation pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction au travail avec JSON en Go



JSON (JavaScript Object Notation) est un format léger d'échange de données largement utilisé dans le développement web, les API et les fichiers de configuration. Le langage Go (Golang) fournit le package intégré encoding/json, qui permet d'effectuer facilement l'analyse (décodage) et la sérialisation (encodage) des données. Dans cet article, nous aborderons les bases du travail avec JSON en Go à l'aide d'exemples pratiques, compréhensibles même pour les développeurs débutants.



Fondamentaux du package encoding/json



Le package encoding/json est une bibliothèque standard de Go qui ne nécessite aucune installation supplémentaire. Les deux principaux outils de ce package sont les fonctions json.Marshal (sérialisation) et json.Unmarshal (désérialisation).



Structures et tags JSON



En Go, les données sont généralement représentées sous forme de structures (struct). Les tags sont utilisés pour gérer les noms des champs en JSON. Voici un exemple simple :



package main

import ( "encoding/json" "fmt")

// Définition d'une structure avec des tags JSONtype Person struct { Name string `json:"name"` Age int `json:"age"` Email string `json:"email,omitempty"` IsAdmin bool `json:"is_admin"`}

func main() { // Création d'une instance de la structure person := Person{ Name: "Ivan Petrov", Age: 30, Email: "ivan@example.com", IsAdmin: true, } // Sérialisation en JSON jsonData, _ := json.Marshal(person) fmt.Println(string(jsonData))}


Résultat de l'exécution :



{"name":"Ivan Petrov","age":30,"email":"ivan@example.com","is_admin":true}


Points importants :

  • Le tag json:"name" indique comment le champ sera nommé en JSON
  • L'option omitempty ignore les champs vides (valeurs nulles)
  • Les champs de la structure doivent être exportables (commencer par une majuscule)


Sérialisation (Marshal) des données en JSON



La sérialisation est le processus de conversion d'une structure Go ou d'un autre type de données en une chaîne JSON. La fonction json.Marshal retourne un slice d'octets ([]byte) et une erreur.



Exemples de sérialisation de différents types



package main

import ( "encoding/json" "fmt")

type Product struct { ID int `json:"id"` Name string `json:"name"` Price float64 `json:"price"` Tags []string `json:"tags,omitempty"` InStock bool `json:"in_stock"`}

func main() { // Sérialisation d'une structure product := Product{ ID: 101, Name: "Ordinateur portable", Price: 79999.99, Tags: []string{"électronique", "ordinateurs portables"}, InStock: true, } // Affichage formaté avec indentation jsonData, _ := json.MarshalIndent(product, "", " ") fmt.Println(string(jsonData)) // Sérialisation d'un slice de structures products := []Product{ {ID: 1, Name: "Souris", Price: 1500.00, InStock: true}, {ID: 2, Name: "Clavier", Price: 3500.00, InStock: false}, } jsonArray, _ := json.Marshal(products) fmt.Println(string(jsonArray))}


Résultat :



{  "id": 101,  "name": "Ordinateur portable",  "price": 79999.99,  "tags": [    "électronique",    "ordinateurs portables"  ],  "in_stock": true}[{"id":1,"name":"Souris","price":1500,"in_stock":true},{"id":2,"name":"Clavier","price":3500,"in_stock":false}]


Analyse (Unmarshal) JSON en Go



L'analyse est le processus inverse : conversion d'une chaîne JSON en une structure Go. Pour cela, on utilise la fonction json.Unmarshal.



Exemple de base d'analyse



package main

import ( "encoding/json" "fmt" "log")

type User struct { Username string `json:"username"` Age

Blogs

Book Recommendations