DEV Community

Maxime Guilbert
Maxime Guilbert

Posted on • Edited on

Comment lire un fichier JSON et le convertir en Go struct ?

Aujourd'hui, nous allons voir comment lire des fichiers en Go et comment convertir le contenu en instance de Go struct!


1 - Comment lire une liste de fichiers dans un dossier

Premièrement, comment lire une liste de fichiers dans un dossier?

Avec la librairie io/ioutil c'est très simple. L'exemple suivant vous montre qu'en quelques lignes de code, vous serez capables de lister l'ensemble des fichiers se trouvant dans un dossier et voir pour chacun d'entre eux si c'est un dossier ou non.

package main

import (
    "io/ioutil"
    "log"
)

...
    files, err := ioutil.ReadDir("./chemin/vers/un/dossier")
    if err != nil {
        log.Fatal(err)
    }

    for _, file := range files {
        fmt.Println(file.Name(), file.IsDir())
    }

...

Enter fullscreen mode Exit fullscreen mode

2 - Comment lire un fichier ?

Toujours avec la librairie io/outil, en appelant sa méthodee ReadFile on obtient le contenu du fichier et une potentielle erreur si quelque chose d'imprévu s'est passé ou si le fichier n'est pas présent ou lisible.

content, err := ioutil.ReadFile("file_name.txt")
if err != nil {
    log.Fatal(err)
}
Enter fullscreen mode Exit fullscreen mode

3 - Convertir un fichier JSON en instance de Go Struct

Maintenant que l'on sait lire un fichier, on va voir comment convertir un contenu JSON en instance de Go Struct.

Pour commencer, il faut qu'on définisse dans la Go Struct le mapping entre la structure et son format JSON.

Pour chacun des champs, on va ajouter un paramètre json qui va permettre de faire le lien entre le JSON et la structure.

type Creature struct {
    Name                  string            `json:"Name"`
    Tags                  []string          `json:"Tags"`
    HP                    CreatureHP        `json:"HP"`

}

type CreatureHP struct {
    Value int    `json:"Value"`
    Notes string `json:"Notes"`
}
Enter fullscreen mode Exit fullscreen mode

A présent que nous avons la structure Creature de prête, on peut effectuer la transformation avec le code suivant:

// Déclaration de l'instance de la structure que l'on veut remplir
creature := bestiary.Creature{}

// Remplissage de l'instance avec le contenu du fichier JSON grâce au mapping défini plus tôt
err = json.Unmarshal(content, &creature)

// Vérification d'une éventuelle erreur
if err != nil {
   panic(err)
}
Enter fullscreen mode Exit fullscreen mode

Et voilà! Maintenant vous savez comment faire pour pouvoir le réutiliser dans votre application Golang!


J'espère que ça vous aidera! 🍺🍺


Vous voulez me supporter?

Buy Me A Coffee


Vous voulez me supporter?

Buy Me A Coffee

Top comments (0)