go struct转map
时间: 2023-02-11 17:54:25 浏览: 173
struct 转 map 的方法有很多, 你可以使用第三方库如 "encoding/json" 来达到这个目的.
在 json 包中, 可以使用 json.Marshal() 将 struct 转换为 json 数据, 然后使用 json.Unmarshal() 将 json 数据转换为 map。
示例代码如下:
```
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Tom", Age: 18}
b, _ := json.Marshal(p)
var m map[string]interface{}
json.Unmarshal(b, &m)
fmt.Println(m)
}
```
运行后会得到:
```
map[Age:18 Name:Tom]
```
或者使用反射:
```
package main
import (
"fmt"
"reflect"
)
type Person struct {
Name string
Age int
}
func struct2map(obj interface{}) map[string]interface{} {
t := reflect.TypeOf(obj)
v := reflect.ValueOf(obj)
var data = make(map[string]interface{})
for i := 0; i < t.NumField(); i++ {
data[t.Field(i).Name] = v.Field(i).Interface()
}
return data
}
func main() {
p := Person{Name: "Tom", Age: 18}
m := struct2map(p)
fmt.Println(m)
}
```
运行后会得到:
```
map[Age:18 Name:Tom]
```
还有很多第三方库可以使用, 比如 "github.com/mitchellh/mapstructure"
阅读全文