Golang使用随机键解组json

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

我正在使用一个API中的JSON,其中一个返回字段使用下面返回的动态值(如SERVICE-1234)进行键控

{
  "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, &timeseries); 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
。可能重复的和其他。可能重复的谢谢!也许这是我的解决方案!