在下面的程序中,我从API中提取一些数据。
它输出一个相当复杂的数据。当 I 时,结果是类型 。如果我尝试读取结果,它只是一个随机的整数数组。ioutil.ReadAll(resp.Body)[]uint8
但是,如果我使用将其转换为字符串,我能够阅读它 但是我想在结构中使用它 并且无法取消编组。string(diskinfo)
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"reflect"
)
type ApiResults struct {
results []struct {
statement_id int `json.statement_id`
series []struct {
name string `json.name`
tags struct {
host string `json.host`
}
columns []string `json.columns`
values []interface{} `json.values`
}
}
}
func main() {
my_url := "my_url"
my_qry := fmt.Sprintf("my_query")
resp, err := http.Get(my_url + url.QueryEscape(my_qry))
if err != nil {
fmt.Printf("ERROR: %v\n", err)
} else {
fmt.Println(reflect.TypeOf(resp))
diskinfo, _ := ioutil.ReadAll(resp.Body)
fmt.Println(reflect.TypeOf((diskinfo)))
fmt.Println(diskinfo)
fmt.Println(string(diskinfo))
diskinfo_string := string(diskinfo)
data := ApiResults{}
json.Unmarshal([]byte(diskinfo_string), &data)
//fmt.Printf("Values = %v\n", data.results.series.values)
//fmt.Printf("Server = %v\n", data.results.series.tags.host)
}
}
如果我以字符串形式查看数据,我得到这个(格式化):
{"results":[
{"statement_id":0,
"series":[
{"name":"disk",
"tags":{"host":"myServer1"},
"columns":["time","disk_size"],
"values":[["2021-07-07T07:53:32.291490387Z",1044]]},
{"name":"disk",
"tags":{"host":"myServer2"},
"columns":["time","disk_size"],
"values":[["2021-07-07T07:53:32.291490387Z",1046]]}
]}
]}
我认为我的结构也结构不正确,因为 API 结果包含多个主机的信息。但首先,我怀疑数据是否必须以不同的格式发送到结构。一旦我这样做了,我可能会尝试弄清楚接下来如何从结构中读取。Apireturn
烙印99
相关分类