来自比特币 api 的 Golang json 查询返回无效字符

有些东西告诉我我没有正确理解 json。我试图从http://api.bitcoincharts.com/v1/trades.csv?symbol=rockUSD获取一些数据,但我的 Unmarshal 似乎无法读取 json 数据。我是 golang(以及 json)的新手,我想知道我如何能够跳过我正在犯的那个错误的字符错误。


我的错误:


invalid character ',' after top-level value

panic: invalid character ',' after top-level value

我的代码:


package main


import ("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)


}


翻翻过去那场雪
浏览 317回答 1
1回答

米琪卡哇伊

那根本不是 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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go