直接说结论:json里的数字会被优先解析成 float

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
jsonData := `{
"stringKey": "Hello, world",
"intKey": 42,
"floatKey": 3.14159
}`

var data map[string]interface{}
if err := json.Unmarshal([]byte(jsonData), &data); err != nil {
fmt.Println("JSON 解析错误:", err)
return
}

fmt.Println("stringKey:", data["stringKey"].(string))
fmt.Println("intKey:", data["intKey"].(int))
fmt.Println("floatKey:", data["floatKey"].(float64))

42 不能被断言成 int,也会被断言成 float