From 407d7ea9a55cea28c04545baafec5a0bf630721c Mon Sep 17 00:00:00 2001 From: Nickiel12 Date: Sat, 30 Dec 2023 10:35:51 -0800 Subject: [PATCH] added json encoding --- recount-server.go | 61 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 52 insertions(+), 9 deletions(-) diff --git a/recount-server.go b/recount-server.go index 2065ae4..a148595 100644 --- a/recount-server.go +++ b/recount-server.go @@ -2,23 +2,29 @@ package main import ( "database/sql" + "encoding/json" + "net/http" + + "errors" "fmt" "log" + "os" "time" - "net/http" "github.com/shopspring/decimal" _ "github.com/lib/pq" "github.com/jmoiron/sqlx" ) +// "json:"json_code_name,omitempty"" (omit empty) +// if you use `json:"-"` it doesn't encode it type Transaction struct { - Id int `db:"trns_id"` - Amount decimal.Decimal `db:"trns_amount"` - Description sql.NullString `db:"trns_description"` - Account int `db:"trns_account"` - Bucket sql.NullInt64 `db:"trns_bucket"` - Date time.Time `db:"trns_date"` + Id int `db:"trns_id" json:"Id"` + Amount decimal.Decimal `db:"trns_amount" json:"Amount"` + Description sql.NullString `db:"trns_description" json:"Description"` + Account int `db:"trns_account" json:"Account"` + Bucket sql.NullInt64 `db:"trns_bucket" json:"Bucket"` + Date time.Time `db:"trns_date" json:"TransactionDate"` } func hello(w http.ResponseWriter, req *http.Request) { @@ -61,7 +67,12 @@ func main() { for _, trns := range transactions { if trns.Description.Valid { - log.Print(fmt.Sprintf("%v : %#v", trns.Amount, trns.Id)) + //bytes, err := json.Marshal(trns) + bytes, err := json.MarshalIndent(trns, "", "\t") + if err != nil { + log.Fatal(err) + } + log.Println(string(bytes)) } else { log.Print("amount invalid") } @@ -69,10 +80,42 @@ func main() { log.Print("select all run is done") + /* + jsonExample := `{ + "Id": 3, + "Amount": "100", + "Description": { + "String": "Transaction 3", + "Valid": true + }, + "Account": 1, + "Bucket": { + "Int64": 1, + "Valid": true + }, + "TransactionDate": "2023-11-11T00:00:00Z" + }` + + var trns Transaction = Transaction{} + err = json.Unmarshal([]byte(jsonExample), &trns) + + if err != nil { + log.Println(err) + } else { + log.Println(trns.Amount) + } + */ + http.HandleFunc("/hello", hello) - http.HandleFunc("/headers", headers) + //http.HandleFunc("/headers", headers) http.ListenAndServe(":8090", nil) + if errors.Is(err, http.ErrServerClosed) { + fmt.Printf("server closed\n") + } else if err != nil { + fmt.Printf("error starting server: %s\n", err) + os.Exit(1) + } //fmt.Println("Hello World") }