我已经使用Golang读取了一个excel csv文件,并希望将它们作为JSON数据打印到Web浏览器中,但是每次打印时Web浏览器中的JSON数据会跳过一些数据。我已经加倍检查这些数据是否在csv文件中,但没有在网页浏览器中打印。任何帮助你可以建议我?由于事先使用Golang将CSV转换为JSON - 在Web浏览器中打印时会跳过一些数据
package main
import (
"encoding/csv"
"encoding/json"
"fmt"
"github.com/julienschmidt/httprouter"
"net/http"
"os"
)
var csvData [][]string
var Record IRIS
var i int = 0
func init() {
csvFile, err := os.Open("IRIS.csv")
if err != nil {
fmt.Println(err)
}
reader := csv.NewReader(csvFile)
reader.FieldsPerRecord = -1
csvData, _ = reader.ReadAll()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer csvFile.Close()
}
type IRIS struct {
ID string
SepalLength string
SepalWidth string
PetalLength string
PetalWidth string
Species string
}
func main() {
router := httprouter.New()
router.GET("/stream/content/data", StreamDataHandler)
fmt.Println(http.ListenAndServe("127.0.0.1:9090", router))
}
func StreamDataHandler(res http.ResponseWriter, req *http.Request, p httprouter.Params) {
res.Header().Set("Access-Control-Allow-Origin", "*")
// read data from CSV file
Record.ID = csvData[i][0]
Record.SepalLength = csvData[i][1]
Record.SepalWidth = csvData[i][2]
Record.PetalLength = csvData[i][3]
Record.PetalWidth = csvData[i][4]
Record.Species = csvData[i][5]
jsondata, err := json.Marshal(Record) // convert to JSON
if err != nil {
fmt.Println(err)
os.Exit(1)
}
i = i + 1
fmt.Fprintf(res, string(jsondata))
return
}
OUTPUT:
{ “ID”: “2”, “SepalLength”: “4.9”, “SepalWidth”: “3”, “PetalLength”: “1.4”,” PetalLength“:”1.7“,”SepalLength“:”5.4“ “”,“PetalWidth”:“0.4”,“物种”:“setosa”}
{“ID”:“7”,“SepalLength”:“5.7”,“SepalWidth”:“4.4” :“1.5”,“PetalWidth”:“0.4”,“物种”:“setosa”}
。 。 。
为什么会发生这种情况?
我其实想打印的所有值(不跳过任何),如数据的流从Excel CSV每2第二个文件
如果你需要一个全球计数器我推荐你这个https://golang.org/pkg/expvar/#Int –