gpt4 book ai didi

json - 没有键的结构/映射数组

转载 作者:行者123 更新时间:2023-12-01 22:43:45 25 4
gpt4 key购买 nike

欢迎大家。
告诉我如何在 GO 中获得一个平面数组。
也就是说,有条件地,我有一个没有以下形式的键的结构:

type DashboardHeatMapStruct struct {
float64
string
}

接下来,我以 JSON 的形式将它作为对 rest 的响应,并得到以下形式的输出:
[[0,"#AEAEAE"],[0.01,"#0e00ff"],[0.65,"#00ffcf"],[0.7,"#00ffcf"],[0.75,"#00ff9c"],[0.8,"#00ff0a"],[0.85,"#b3ff00"],[0.9,"#ffdc00"],[0.95,"#ff6d00"],[1,"#c60000"]]

最佳答案

声明一个结构类型来表示 JSON 数组的元素。

type DashboardHeatMapStruct struct {
t float64
c string
}

实现 json.Unmarshaler该类型的接口(interface):
func (d *DashboardHeatMapStruct) UnmarshalJSON(p []byte) error {
// p is expected to be JSON array with float and
// string values. Create slice to match.
v := []interface{}{&d.t, &d.c}

// Unmarshal to JSON array to the slice. The JSON decoder
// follows the pointers in the slice to set the struct members.
return json.Unmarshal(p, &v)
}

实现 json.Marshler接口(interface)编码回 JSON。
func (d DashboardHeatMapStruct) MarshalJSON() ([]byte, error) {
v := []interface{}{d.t, d.c}
return json.Marshal(v)
}

解码到 DashboardHeatMapStruct 的 slice :
var result []DashboardHeatMapStruct
if err := json.Unmarshal(data, &result); err != nil {
// handle error
}

Run it on the playground .

关于json - 没有键的结构/映射数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60899821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com