Created
March 10, 2017 22:48
-
-
Save drernie/5684f9def5bee832ebc50cabb46c377a to your computer and use it in GitHub Desktop.
Golang Convert CSV Records to Dictionaries using Header Row as Keys
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// CSVToMap takes a reader and returns an array of dictionaries, using the header row as the keys | |
func CSVToMap(reader io.Reader) []map[string]string { | |
r := csv.NewReader(reader) | |
rows := []map[string]string{} | |
var header []string | |
for { | |
record, err := r.Read() | |
if err == io.EOF { | |
break | |
} | |
if err != nil { | |
log.Fatal(err) | |
} | |
if header == nil { | |
header = record | |
} else { | |
dict := map[string]string{} | |
for i := range header { | |
dict[header[i]] = record[i] | |
} | |
rows = append(rows, dict) | |
} | |
} | |
return rows | |
} |
In line no 14, i think we should change header == nil
to if len(header) == 0
In line no 14, i think we should change
header == nil
toif len(header) == 0
The we should declare it as a slice i guess
header := make([]string,0)
This method is really awesome!
Nice work! I was working with 2 colums csv and found here. I used same made a function for one map[type]type
It is here
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Nice