将具有 json 的字符串转换为 json 或 struct

我从 API 收到此类响应:


{

    "ok": true,

    "response": "[

    {

        "Id": 163,

        "Name": "Availability",

        "Path": "Performance|Tier1",

        "frequency": "ONE_MIN",

        "Values": [

            {

                "startTimeInMillis": 1571314200000,

                "occurrences": 1,

                "current": 1,

                "min": 0,

                "max": 0,

                "useRange": false,

                "count": 1,

                "sum": 1,

                "value": 1,

                "standardDeviation": 0

            },

            {

                "startTimeInMillis": 1571314260000,

                "occurrences": 1,

                "current": 1,

                "min": 0,

                "max": 0,

                "useRange": false,

                "count": 1,

                "sum": 1,

                "value": 1,

                "standardDeviation": 0

            },

            }

       ]

    }

]

}

我想将其转换为时间序列格式。为此,我首先尝试解组对此结构的响应:


type App struct{

    ID     string   `json:"metric_id"`

    Name   string   `json:"metric_name"`

    Path   string   `json:"metric_path"`

    Frequency    string   `json:"frequency"`

    Values []string `json:"metric_values"`

我正在这样做:


apprsp := App{}

fmt.Println(json.Unmarshal([]byte(ame.Response), &apprsp))

但我在 时遇到错误json.Unmarshal。我想做的是生成一个 json 格式:


{'time':'value','time1':'value2'}

其中time/time1和value/value2是startTimeInMillis值数组中的 和 值。json 解组时我做错了什么?应该如何解组上述数据?


米琪卡哇伊
浏览 149回答 2
2回答

不负相思意

您的App结构甚至与您尝试解组的 json 文档没有密切相关。要解组 json 文档,您必须有一个与底层文档的结构有些匹配的 Go 结构。type ResponseValue struct {    StartTime int64 `json:"startTimeMillis"`    // other elements of Values here, if you're interested in them}type Response struct {  Id int `json:"Id"`  Name string `json:"Name"`  Path string `json:"Path"`  Frequency string `json:"frequency"`  Values []ResponseValue `json:"Values"`}type Body struct {  Response []Response `json:"response"`}var data Bodyjson.Unmarshal([]byte(ame.Response),&data)然后,您可以从 中提取时间序列data。

杨魅力

这是你的响应结构type Response struct {    ID        int    `json:"Id"`    Name      string `json:"Name"`    Path      string `json:"Path"`    Frequency string `json:"frequency"`    Values    []struct {        StartTimeInMillis int64 `json:"startTimeInMillis"`        Occurrences       int   `json:"occurrences"`        Current           int   `json:"current"`        Min               int   `json:"min"`        Max               int   `json:"max"`        UseRange          bool  `json:"useRange"`        Count             int   `json:"count"`        Sum               int   `json:"sum"`        Value             int   `json:"value"`        StandardDeviation int   `json:"standardDeviation"`    } `json:"Values"`}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go