gpt4 book ai didi

go - 将 influxdb 结果读入字符串导致错误 : interface{} is json. Number, not string

转载 作者:IT王子 更新时间:2023-10-29 02:08:05 25 4
gpt4 key购买 nike

我正在尝试将 influxdb record(类型:[]interface{})转换为 []string,以便我可以编写它到 csv。

记录

[2018-12-20T07:26:23Z 90 123.2132 12.3232 30 1 user]

代码

s := make([]string, len(record))
for i, v := range record {
s[i] = v.(string)
}

但是我得到了这个错误

interface {} is json.Number, not string

刚接触golang,对interface和json不太熟悉

最佳答案

我相信你的记录数组是由你的数据库驱动程序生成的,有点像这样:

record := make([]interface{}, 0, 10)
dec := json.NewDecoder(strings.NewReader(`["2018-12-20T07:26:23Z", 90, 123.2132, 12.3232, 30, 1, "user"]`))
dec.UseNumber()
dec.Decode(&record)

所有数字都生成为 json.Number 而不是 float64。由于 json.Number 支持到字符串的简单转换,您可以将该接口(interface)与简单的 type switch 一起使用。这样做:

s := make([]string, len(record))
for i, v := range record {
switch val := v.(type) {
case string:
s[i] = val
case json.Number:
s[i] = val.String()
default:
panic(fmt.Sprintf("unhandled type: %T", v))
}
}

实际操作如下: https://play.golang.org/p/jD_z94vQ7Wt

关于go - 将 influxdb 结果读入字符串导致错误 : interface{} is json. Number, not string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53879152/

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