当解析 JSON 数据时,默认将数值当做哪种类型?
在Go语言中,当使用标准库encoding/json
解析JSON时,如果没有明确指定目标类型,那么数值会被默认解析为float64
类型。
以下是一个简单的例子:
package main
import (
"encoding/json"
"fmt"
)
func main() {
data := []byte(`{"num":123.45}`)
var obj map[string]interface{}
if err := json.Unmarshal(data, &obj); err != nil {
fmt.Println("error:", err)
}
fmt.Printf("num is of type %T\n", obj["num"])
}
在这个例子中,我们解析一个含有数值的JSON字符串,但没有指定目标类型。因此,数值被解析为float64
类型。程序的输出将是:
num is of type float64
如果你希望将数值解析为其他类型,你需要明确指定目标类型。例如,你可以将目标类型设为一个自定义的结构体,这个结构体的字段类型为你需要的类型。