1
0
Fork 0
sgp-internet-ping/json2csv.go

60 lines
993 B
Go
Raw Permalink Normal View History

2018-03-21 21:59:15 +08:00
package main
import (
2018-03-23 13:05:07 +08:00
"encoding/csv"
"encoding/json"
"flag"
"io/ioutil"
2018-03-22 22:52:45 +08:00
"log"
2018-03-23 13:05:07 +08:00
"os"
"strconv"
2018-03-21 21:59:15 +08:00
)
2018-03-23 13:05:07 +08:00
var flagIn = flag.String("in", "", "input file")
var flagOut = flag.String("out", "country.csv", "output file")
2018-03-21 21:59:15 +08:00
func main() {
2018-03-23 13:05:07 +08:00
flag.Parse()
in := *flagIn
out := *flagOut
data := make(map[string][]int, 0)
log.Println("Reading file " + in)
raw, err := ioutil.ReadFile(in)
if err != nil {
panic(err)
}
log.Println("Parsing file " + in)
err = json.Unmarshal(raw, &data)
if err != nil {
panic(err)
}
log.Println("File " + in + " read successfully")
log.Println("Converting to csv")
odata := make([][]string, 0)
for cc, ttls := range data {
for _, ttl := range ttls {
odata = append(odata, []string{
cc,
strconv.Itoa(ttl),
})
}
}
log.Println("Creating file " + out)
outFile, err := os.Create(out)
if err != nil {
panic(err)
}
log.Println("Encoding csv")
w := csv.NewWriter(outFile)
err = w.WriteAll(odata)
if err != nil {
panic(err)
}
2018-03-21 21:59:15 +08:00
}