【发布时间】:2018-03-30 06:50:24
【问题描述】:
我有一个 map[string]interface{} 因为解码为 JSON;对于普通数据,接口大多只是数字,但类型为字符串,如下所示:
var a interface{}
a="3"
然后所有的数据都会被存储到一个struct中。
type someStruct struct {
ID string
Number1 int
Number2 int
Number3 int
Number4 int
}
所以我需要将 interface 转换为 int,但不能轻松有效地做到这一点,因为只有代码是 https://play.golang.org/p/oktbvTUbk93,如果你考虑到我应该处理所有可能的错误
我想直接将其转换为 int,我一直在寻找解决方案,但任何这种转换都可以按我的意愿工作https://play.golang.org/p/Dw67U6kZwHC
如果您想知道为什么我不直接将其解码为结构,因为它是动态数据,实际解码是这样发生的:
type dataIn struct {
Code int `json:"code"`
ID string `json:"id"`
Data interface{} `json:"data"`
}
然后我根据code和id来处理Data,都是不同的数据结构,所以不能直接用JSON处理
【问题讨论】:
-
使用blank identifier 来使用值。例如,
_, _ = ok, err。 -
如果问题空间很宽,您的代码也会很宽。这里没有魔法。做一些编程。
-
json 包可以将数字编码和解码为字符串:play.golang.org/p/MdrfqQjXLkw。如何处理不一致的字段,请参阅this question。
-
@peterSO 如果我这样做,它将继续低效,因为会有一个变量分配,然后我可以将它存储到destine中
-
@Peter "如果你想知道为什么我不直接将它解码成结构,那是因为它是动态数据"
标签: json go go-interface