Go: parsing di un file JSON

Il parsing di file JSON è una delle operazioni più comuni quando si lavora con dati strutturati in Go. JSON (JavaScript Object Notation) è un formato di dati ampiamente utilizzato per lo scambio di informazioni tra applicazioni. Go fornisce un pacchetto standard encoding/json che offre un'ampia gamma di funzionalità per manipolare dati JSON.

Iniziamo importando il pacchetto encoding/json nel nostro programma Go:


    package main

    import (
        "encoding/json"
        "fmt"
        "io/ioutil"
        "os"
    )    

Il passo successivo è leggere il contenuto del file JSON. Possiamo utilizzare la funzione ioutil.ReadFile per ottenere il contenuto del file come un array di byte:


    func main() {
        filePath := "data.json"
    
        // Leggi il contenuto del file
        data, err := ioutil.ReadFile(filePath)
        if err != nil {
            fmt.Println("Errore nella lettura del file:", err)
            return
        }
    }

Ora che abbiamo il contenuto del file, possiamo iniziare a effettuare il parsing del JSON. Utilizziamo la funzione json.Unmarshal per convertire i dati JSON in una struttura di dati Go corrispondente. Dobbiamo definire una struttura Go che rappresenti la struttura del JSON:


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

Successivamente, effettuiamo il parsing dei dati JSON utilizzando la funzione json.Unmarshal:


    // Effettua il parsing dei dati JSON
    var person Person
    err = json.Unmarshal(data, &person)
    if err != nil {
        fmt.Println("Errore nel parsing del JSON:", err)
        return
    }

Ora i dati JSON sono stati convertiti nella struttura person di tipo Person. Possiamo accedere ai singoli campi dei dati come di consueto:


    fmt.Println("Nome:", person.Name)
    fmt.Println("Età:", person.Age)
    fmt.Println("Email:", person.Email)

Se il file JSON contiene un array di oggetti, possiamo utilizzare una slice per archiviare i dati. Ad esempio, se il file JSON contiene un array di persone, possiamo definire una struttura come questa:


    type Person struct {
        Name  string `json:"name"`
        Age   int    `json:"age"`
        Email string `json:"email"`
    }
    
    type People struct {
        People []Person `json:"people"`
    }

E poi effettuare il parsing del JSON come segue:


    // Effettua il parsing dei dati JSON
    var people People
    err = json.Unmarshal(data, &people)
    if err != nil {
        fmt.Println("Errore nel parsing del JSON:", err)
        return
    }
    
    // Stampa i dati
    for _, p := range people.People {
        fmt.Println("Nome:", p.Name)
        fmt.Println("Età:", p.Age)
        fmt.Println("Email:", p.Email)
        fmt.Println()
    }
    

Questo ciclo for stampa i dati di ogni persona nel file JSON.

Infine, ricorda di gestire gli errori durante il parsing del JSON. Se il JSON non è valido o non corrisponde alla struttura definita, la funzione json.Unmarshal restituirà un errore. Assicurati di controllare e gestire gli errori adeguatamente nel tuo codice.

Il parsing di file JSON in Go è un'operazione abbastanza semplice grazie al pacchetto encoding/json fornito dal linguaggio. Seguendo i passaggi sopra descritti, sarai in grado di effettuare il parsing dei dati JSON in pochi semplici passaggi e lavorare con essi nel tuo programma Go.

Torna su