有些東西告訴我我沒有正確理解 json。我試圖從http://api.bitcoincharts.com/v1/trades.csv?symbol=rockUSD獲取一些數據,但我的 Unmarshal 似乎無法讀取 json 數據。我是 golang(以及 json)的新手,我想知道我如何能夠跳過我正在犯的那個錯誤的字符錯誤。我的錯誤:invalid character ',' after top-level valuepanic: invalid character ',' after top-level value我的代碼:package mainimport ("fmt" "net/http" "io/ioutil" "encoding/json")type Prices struct { Data string}func main() { url := "http://api.bitcoincharts.com/v1/trades.csv?symbol=rockUSD" httpresp, err := http.Get(url) if err != nil{ fmt.Println(err) panic(err) } defer httpresp.Body.Close() htmldata, err := ioutil.ReadAll(httpresp.Body) if err != nil{ fmt.Println(err) panic (err) } var jsonData []Prices err = json.Unmarshal([]byte(htmldata), &jsonData) if err != nil { fmt.Println(err) panic (err) } fmt.Println(jsonData)}
1 回答

米琪卡哇伊
TA貢獻1998條經驗 獲得超6個贊
那根本不是 json 數據,您必須編寫自定義解析器。
例子:
.........
data := readData(httpresp.Body)
........
func readData(r io.Reader) (out [][3]float64) {
br := bufio.NewScanner(r)
for br.Scan() {
parts := strings.Split(br.Text(), ",")
if len(parts) != 3 {
continue
}
var fparts [3]float64
for i, p := range parts {
// bad idea to ignore errors, but it's left as exercise for the reader.
fparts[i], _ = strconv.ParseFloat(p, 64)
}
out = append(out, fparts)
}
return
}
- 1 回答
- 0 關注
- 362 瀏覽
添加回答
舉報
0/150
提交
取消