Golang使用随机键解组json
我正在使用一个API中的JSON,其中一个返回字段使用下面返回的动态值(如SERVICE-1234)进行键控Golang使用随机键解组json,json,go,struct,Json,Go,Struct,我正在使用一个API中的JSON,其中一个返回字段使用下面返回的动态值(如SERVICE-1234)进行键控 { "timeseriesId": "serversidefailurerate", "displayName": "Number of server side errors", "dimensions": [ "SERVICE" ], "unit": "Percent (%)", "detailedSource": "Services", "type
{
"timeseriesId": "serversidefailurerate",
"displayName": "Number of server side errors",
"dimensions": [
"SERVICE"
],
"unit": "Percent (%)",
"detailedSource": "Services",
"types": [],
"dataResult": {
"dataPoints": {
"SERVICE-1234": [
[
1563472440000,
0.8034610630407911
]
]
},
"unit": "Percent (%)",
"resolutionInMillisUTC": 3600000,
"aggregationType": "AVG",
"entities": {
"SERVICE-1234": "server"
},
"timeseriesId": "serversidefailurerate"
},
"aggregationTypes": [
"AVG",
"SUM",
"MIN",
"MAX"
],
"filter": "BUILTIN"
}
我使用以下代码来收集和提取值,但我不知道如何引用结构中的动态键
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type Timeseries struct {
TimeseriesId string
DisplayName string
Dimensions []string
Unit string
DetailedSource string
Types []string
DataResult struct {
DataPoints interface{}
ResolutionInMillisUTC int
AggregationType string
Entities interface{}
TimeseriesId string
}
AggregationTypes []string
Filter string
}
func main() {
response, err := http.Get("url")
if err != nil {
fmt.Printf("The HTTP request failed with error %s\n", err)
} else {
temp, _ := ioutil.ReadAll(response.Body)
// fmt.Println(string(temp))
var timeseries Timeseries
if err := json.Unmarshal(temp, ×eries); err != nil {
fmt.Println("There was an error:", err)
}
fmt.Println(timeseries)
}
}
我希望在各个键中输出值,但我不知道如何开始执行。因此我建议使用类似这样的方法-
为了得到一片钥匙。然后只需在地图中选择数据就可以了。我认为解组地图可能没问题。。。然后是距离图
bytes := []byte("a")
var a = make(map[string]string)
err := json.Unmarshal(bytes, &a)
if err != nil {
panic(err)
}
当键未知时使用映射:
DataPoints映射[string][]float64
。可能重复的和其他。可能重复的谢谢!也许这是我的解决方案!