From 5463c2d05a44af49bee295a144e102adeb3384e2 Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Sun, 23 Feb 2025 16:51:26 -0700 Subject: [PATCH] initial --- go.mod | 3 +++ main.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 go.mod create mode 100644 main.go diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..9ca3155 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module csv-to-json + +go 1.22.1 diff --git a/main.go b/main.go new file mode 100644 index 0000000..f13b398 --- /dev/null +++ b/main.go @@ -0,0 +1,43 @@ +package main + +import ( + "encoding/csv" + "encoding/json" + "fmt" + "io" + "log" + "os" + "strconv" +) + +func main() { + parser := csv.NewReader(os.Stdin) + fields, err := parser.Read() + if err != nil { + panic(err) + } + n := 0 + for { + n += 1 + line, err := parser.Read() + if err == io.EOF { + break + } + if err != nil { + panic(err) + } + if len(line) != len(fields) { + log.Println("[WARN]", "line", n, "has", len(line), "fields but only", len(fields), "are known") + } + lineResult := map[string]string{} + for i := range line { + k := strconv.Itoa(i) + if i < len(fields) { + k = fields[i] + } + lineResult[k] = line[i] + } + b, _ := json.Marshal(lineResult) + fmt.Printf("%s\n", b) + } +}