У меня есть следующая часть кода, которая называет yahoo finance api, чтобы получить значения запасов для данного символа акции.Как получить значения из JSON в golang
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"os"
)
//Response structure
type Response struct {
Query struct {
Count int `json:"count"`
Created string `json:"created"`
Lang string `json:"lang"`
Results struct {
Quote []struct {
LastTradePriceOnly string `json:"LastTradePriceOnly"`
} `json:"quote"`
} `json:"results"`
} `json:"query"`
}
func main() {
var s Response
response, err := http.Get("http://query.yahooapis.com/v1/public/yql?q=select%20LastTradePriceOnly%20from%20yahoo.finance.quote%20where%20symbol%20in%20(%22AAPL%22,%22FB%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys")
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
} else {
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
json.Unmarshal([]byte(contents), &s)
fmt.Println(s.Query.Results.Quote)
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
}
fmt.Printf("%s\n", string(contents))
}
}
fmt.Println (s.Query.Results.Quote) дает мне массив несколько значений, так как котировка массив структуры. Например: [{52.05}, {114.25}] Как мне разделить его на одно значение в golang? Для например: 52.05 114.25
Помощь очень ценю. Спасибо
Вы упомянули, что были новыми, поэтому обратите внимание, если вы это знаете, но вы можете использовать: для _, q: = диапазон s.Query.Results.Quote {q.LastTradePriceOnly} (как простая итерация). Кроме того, если вы создадите LastTradePriceOnly для типа float64 (или float32), он будет разбираться в числовой форме. не делайте этого, если он иногда не является числовым –
Спасибо за ответ Дэвид. Я буду считать это :) –