annotate src/csv2json/csv2json.go @ 28:8e3f320396b8

compress dictionary.
author pyon@macmini
date Sat, 09 Feb 2019 15:56:49 +0900
parents bf5d764cd80d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
1 /****************************************************************************/
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
2 /* csv2json.go */
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
3 /* Last Change: 2016-11-13 Sun 13:49:23. */
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
4 /* By T.Mutoh */
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
5 /****************************************************************************/
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
6 package main
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
7
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
8 import (
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
9 "encoding/csv"
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
10 "encoding/json"
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
11 "flag"
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
12 // "fmt"
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
13 "log"
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
14 "os"
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
15 "strconv"
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
16 )
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
17
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
18 type office struct {
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
19 Id string
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
20 Sv string
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
21 Name string
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
22 Addr string
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
23 Phone string
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
24 Fax string
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
25 Capacity int
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
26 }
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
27
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
28 func main() {
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
29 flag.Parse()
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
30
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
31 f, err := os.Open( flag.Arg(0) ); if err != nil {
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
32 log.Fatal( err )
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
33 }
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
34
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
35 r := csv.NewReader( f )
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
36 r.Comment = '#'
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
37 records, err := r.ReadAll(); if err != nil {
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
38 log.Fatal( err )
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
39 }
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
40
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
41 var offices []office
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
42 for _, record := range records {
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
43 c, err := strconv.Atoi( record[6] ); if err != nil {
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
44 c = 0
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
45 }
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
46 data := office{
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
47 Id: record[0],
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
48 Sv: record[1],
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
49 Name: record[2],
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
50 Addr: record[3],
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
51 Phone: record[4],
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
52 Fax: record[5],
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
53 Capacity: c,
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
54 }
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
55 offices = append( offices, data )
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
56 }
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
57
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
58 bytes, err := json.Marshal( offices ); if err != nil {
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
59 log.Fatal( err )
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
60 }
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
61 os.Stdout.Write( bytes )
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
62 }
bf5d764cd80d New: csv2json.go
pyon@macmini
parents:
diff changeset
63