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