我是{
lang的新手,已经创建了一个使用alphavantage API的REST客户端
我发出Go
请求后出现的JSON
结构如下所示。我只需要GET
密钥数据,以便我自己进行计算。如何从Time Series
获取数据并保存,以便我自己操作数据?
Time Series
{
"Meta Data": {
"1. Information": "Intraday (1min) prices and volumes",
"2. Symbol": "MSFT",
"3. Last Refreshed": "2018-05-25 16:00:00",
"4. Interval": "1min",
"5. Output Size": "Compact",
"6. Time Zone": "US/Eastern"
},
"Time Series (1min)": {
"2018-05-25 16:00:00": {
"1. open": "98.2700",
"2. high": "98.4400",
"3. low": "98.2650",
"4. close": "98.3600",
"5. volume": "2466507"
}
}
}
答案 0 :(得分:1)
使用建议的界面是一个好主意,但在这种情况下,因为您知道使用显式类型定义的响应结构,并且应该更容易使用:
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
)
type values map[string]string
type TimeSeries struct {
Item map[string]values `json:"Time Series (1min)"`
}
func main() {
response, err := http.Get("https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=MSFT&interval=1min&apikey=demo")
if err != nil {
fmt.Println(err)
return
}
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
return
}
var ts TimeSeries
err = json.Unmarshal(contents, &ts)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%#v", ts)
}