json - 在 Go 中获取嵌套的 JSON 数据
问题描述
我一直遇到同样的问题,即从嵌套的 JSON 中获取数据。
结构看起来像这样,我对解决方案的尝试如下。
我收到的错误是“response.Result.Bid undefined”我已经解码了 JSON 响应,所以我不太明白这里发生了什么。当我尝试追加到数组时发生错误。
我将不胜感激,如果你们有任何与此主题相关的好资源,我可以阅读有关 lmk 的信息,因为我一直遇到同样的问题。我不是编程背景,我是一名数学家。
type MarketPrices struct {
Success bool `json:"success"`
Result []struct {
Name string `json:"name"`
Basecurrency interface{} `json:"baseCurrency"`
Quotecurrency interface{} `json:"quoteCurrency"`
Type string `json:"type"`
Underlying string `json:"underlying"`
Enabled bool `json:"enabled"`
Ask float64 `json:"ask"`
Bid float64 `json:"bid"`
Last float64 `json:"last"`
Postonly bool `json:"postOnly"`
Priceincrement float64 `json:"priceIncrement"`
Sizeincrement float64 `json:"sizeIncrement"`
Restricted bool `json:"restricted"`
} `json:"result"`
}
func Spot_Price() []float64 {
res, err := http.Get("https://ftx.com/api/markets/BTC/USD")
if err != nil {
log.Fatal(err)
}
var arr []float64
var response MarketPrices
json.NewDecoder(res.Body).Decode(&response)
arr = append(arr, response.Result.Bid)
arr = append(arr, response.Result.Ask)
return arr
}
解决方案
对于问题 [1] 中的实际响应,不返回任何切片。这将是响应的更好建模:
package main
import (
"encoding/json"
"fmt"
"net/http"
)
type MarketPrices struct {
Success bool
Result struct {
Ask, Bid, Last, Priceincrement, Sizeincrement float64
Basecurrency, Name, Quotecurrency, Type, Underlying string
Enabled, Postonly, Restricted bool
}
}
func request() (*MarketPrices, error) {
res, err := http.Get("https://ftx.com/api/markets/BTC/USD")
if err != nil { return nil, err }
defer res.Body.Close()
response := new(MarketPrices)
json.NewDecoder(res.Body).Decode(response)
return response, nil
}
func main() {
price, err := request()
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", price)
}
推荐阅读
- spring-boot - Spring Boot 应用程序中的内部 tomcat 停止响应调用
- ios - 在 UITextField 中自动填充电子邮件地址/联系信息,类似于 safari
- javascript - 只有在设置了另一个同意 cookie 并且“真实”之后,如何设置 Google Analytics cookie?
- sql - Hive 忽略空值
- c# - 关于 sqlTransaction 操作的说明
- cors - 同源策略阻止远程 API 请求
- r - 按下清除按钮后提交按钮正在呈现
- sql - 获取 Sql-Server 中逗号分隔值中未分组列的详细信息
- c - 如果我为 int 指针分配一个浮点变量地址,反之亦然,会发生什么?
- python - 识别 .py 文件的变量并打印它们的 Python 程序