gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:33:23 25 4
gpt4 key购买 nike

有些事情告诉我我没有正确理解 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)

}

最佳答案

那根本不是 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
}

playground

关于json - 来自比特币 api 的 Golang json 查询返回无效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32152724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com