Source File: ex26/main.go

package main

import (
    "log"
    _ "github.com/mattn/go-sqlite3"
    "github.com/jmoiron/sqlx"
    "encoding/json"
    "os"
)

type Customer struct {
    Id int64 `db:"id"`
    Name string `db:"name"`
    Address string `db:"address"`
    City string `db:"city"`
    Zip string `db:"zip"`
}

func main() {
    db, err := sqlx.Connect("sqlite3", "db.sqlite3")
    if err != nil { log.Fatal(err) }

    customers := []Customer{}
    err = db.Select(&customers, "SELECT * FROM customer ORDER BY name ASC")
    if err != nil { log.Fatal(err) }

    json_out, err := json.MarshalIndent(customers, "", "  ")
    if err != nil { log.Fatal(err) }

    err = os.WriteFile("customers.json", json_out, 0644)
    if err != nil { log.Fatal(err) }
}