假如你有一段json

{"a":123, b: {这里的数据结构是不定的}}恰好不固定的结构体中有个整型

此时需要定义一个结构体来接收

type Data struct {	a    int64 	`json:"a"`	Bdata any   `json:"b"`}

正常的解析步骤

var msg = "JSON字符串"var data = Data{}if err = json.Unmarshal([]byte(msg), &data);err!=nil{// 错误处理}

这样解析出来的 data.Bdata 中的数据,如若有 int64,会自动转为string。并且有精度丢失

正确的解析方法

var msg = "JSON字符串"var data = Data{}decoder := json.NewDecoder(strings.NewReader(data))decoder.UseNumber()if err = decoder.Decode(&data); err != nil {	// 错误处理}