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) } }