initial
commit
5463c2d05a
|
|
@ -0,0 +1,43 @@
|
|||
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)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue