当解析 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

如果你希望将数值解析为其他类型,你需要明确指定目标类型。例如,你可以将目标类型设为一个自定义的结构体,这个结构体的字段类型为你需要的类型。

发表评论

后才能评论