在我的 Go 代码中,我正在努力解组我们从端点接收到的 JSON 有效负载。此端点以科学计数法对大值进行编码:
type Test struct {
Key string
Value int32
}
func main() {
data := []byte("{\"Key\": \"derp\", \"Value\": 3.898733e+06}")
var t *Test
err := json.Unmarshal(data, &t)
fmt.Printf("Error: %v\n", err)
fmt.Printf("Data: %v\n", t)
}
此处的编码值相当于标准表示法中的 3,898,733。但是,此代码会打印错误:
json:无法将数字 3.898733e+06 解组到 int32 类型的 Go 结构字段 Test.Value
这是有道理的,因为strconv也无法从字符串中解析此值。但是,我可以做到var i int32 = 3.898733e+06,并且可以编译并生成正确的答案。
那么,我该如何解决这个错误呢?
慕慕森