Fixed csv output (#106) (#107)
csv output processed by Writer from encoder/csv
diff --git a/cmd/output.go b/cmd/output.go
index b697da9..2593ca4 100644
--- a/cmd/output.go
+++ b/cmd/output.go
@@ -19,6 +19,7 @@
import (
"encoding/json"
+ "encoding/csv"
"fmt"
"os"
"reflect"
@@ -168,6 +169,7 @@
func printCsv(response map[string]interface{}, filter []string) {
format := "csv"
+ enc := csv.NewWriter(os.Stdout)
for _, v := range response {
valueType := reflect.TypeOf(v)
if valueType.Kind() == reflect.Slice || valueType.Kind() == reflect.Map {
@@ -191,16 +193,17 @@
}
sort.Strings(header)
}
- fmt.Println(strings.Join(header, ","))
+ enc.Write(header)
}
var values []string
for _, key := range header {
values = append(values, jsonify(row[key], format))
}
- fmt.Println(strings.Join(values, ","))
+ enc.Write(values)
}
}
}
+ enc.Flush()
}
func filterResponse(response map[string]interface{}, filter []string, outputType string) map[string]interface{} {