Go 语言 struct转map的三种方法

注意struct 里面的字段首字母要大写,否则是出不来的。

第一种方式是利用json。我比较喜欢。

josn

1
2
3
4
5
6
7
8
9
10
import "encoding/json"
func ToMap(in2 interface{}) map[string]interface{} {
m := make(map[string]interface{})
inrec, _ := json.Marshal(in2)
json.Unmarshal(inrec, &m)
return m
}

第二种方式是利用反射
reflect

1
2
3
4
5
6
7
8
9
10
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
}

第三种方法是利用第三方的库,最简单。

github.com/fatih/structs

1
m := structs.Map(structs)

坚持原创技术分享,您的支持将鼓励我继续创作!