golang json non-point map 是什么错误
"non-point map" 错误通常是由于在使用 json.Marshal 函数时,将非指针的 map 作为参数传递导致的。在 Go 语言中,json.Marshal 函数只能接受指针类型的参数,以便在序列化过程中可以修改参数的值。
要解决这个错误,可以将 map 声明为指针类型,或者使用结构体来包装 map。下面是两个示例:
示例 1:使用指针类型的 map
package main
import (
"encoding/json"
"fmt"
)
func main() {
m := make(map[string]int)
m["foo"] = 42
// 使用指针类型的 map
ptr := &m
// 序列化为 JSON
data, err := json.Marshal(ptr)
if err != nil {
fmt.Println("序列化失败:", err)
return
}
fmt.Println(string(data))
}
示例 2:使用结构体包装 map
package main
import (
"encoding/json"
"fmt"
)
type Data struct {
Map map[string]int `json:"map"`
}
func main() {
m := make(map[string]int)
m["foo"] = 42
// 使用结构体包装 map
data := Data{Map: m}
// 序列化为 JSON
jsonData, err := json.Marshal(data)
if err != nil {
fmt.Println("序列化失败:", err)
return
}
fmt.Println(string(jsonData))
}
以上示例中,我们将 map 声明为指针类型或者使用结构体包装 map,然后将其传递给 json.Marshal 函数进行序列化,就可以避免 "non-point map" 错误
原文地址: https://www.cveoy.top/t/topic/isU0 著作权归作者所有。请勿转载和采集!